Salve a tutti mi sono appena iscritto volevo chiedere consiglio per un esercizio in C datomi al poli che non riesco a far girare come vorrei:

Questo è il testo dell'esercizio:

Si scriva un programma che acquisisca 2 stringhe corrispondenti a 2 orari
nel formato hh:mm. Il programma deve:

a. Controllare le stringhe, segnalando i casi in cui il formato non sia
rispettato (ad esempio 10,30 non è valido)

b. Stabilire se l’orario contenuto nella prima stringa è precedente a
quello contenuto nella seconda stringa

c. In caso affermativo, tradurre i 2 orari in valori interi corrispondenti
all’orario espresso come distanza in minuti da 00:00 e calcolarne la
differenza

d. Converta il risultato (sarà un numero intero positivo) in una stringa
così composta “<intervallo calcolato>_minuti” e la stampi a video.
Il codice che ho scritto:


codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int ho1,min1,ho2,min2,i,gap;
    char hour1[5],hour2[5],h1[2],h2[2],m1[2],m2[2],pausa;

    printf("\n\n\t\tProgramma che acquisisce da tastiera due orari "
           "\n\n\t\te ne calcola la diffrenza in minuti");

    printf("\n\n\t\tInserisci il primo orario:\n\n\t\t");
    for(i=0;((hour1[i]=getchar())!='\n') && (i<5);i++); // acquisizione primo orario

    if(hour1[2]!=':'){ // controllo formato

            printf("\n\n\t\t\aIl formato non è corretto!!");

            printf("\n\n\t\tInserisci il primo orario:\n\n\t\t");
            for(i=0;((hour1[i]=getchar())!='\n') && (i<5);i++);

        }

    printf("\n\n\t\tInserisci il secondo orario:\n\n\t\t");
    for(i=0;((hour2[i]=getchar())!='\n') && (i<5);i++); // acquisizione secondo orario

    if(hour2[2]!=':'){ // controllo formato

            printf("\n\n\t\t\aIl formato non è corretto!!");

            printf("\n\n\t\tInserisci il secondo orario:\n\n\t\t");
            for(i=0;((hour2[i]=getchar())!='\n') && (i<5);i++);

        }

    strncpy(h1,hour1,2); // copio le cifre dell'ora del primo orario in h1
    strncpy(h2,hour2,2); // copio le cifre dell'ora del secondo orario in h2

    h1[3]='\0'; // termino h1
    h2[3]='\0'; // termino h2


    strncpy(m1,&hour1[3],2); // copio le cifre dei minuti del primo orario in m1
    strncpy(m2,&hour2[3],2); // copio le cifre dei minuti del secondo orario in m2

    m1[3]='\0'; // termino m1
    m2[3]='\0'; // termino m2

    // converto ore e minuti in interi e trasformo le ore in minuti 

    min1=atoi(m1);
    ho1=atoi(h1);
    min2=atoi(m2);
    ho2=atoi(h2);

    min1=min1+(ho1*60);
    min2=min2+(ho2*60);

   // calcolo la differenza in minuti

    if(min1>=min2){

            gap=min1-min2;

        }

    if(min1<min2){

            gap=min2-min1;

        }

    printf("\n\n\t\tLa differenza tra i due orari e' di %d minuti",gap); // stampo a video la differenza

    printf("\n\n\t\t");
    pausa=getchar();
    return 0;
}
Non ho implementato ancora l'ultimo punto perché se, per esempio, inserisco come orari 11:05 e 11:10 la differenza restituita dal programma è 160, quindi non va.

Sapreste aiutarmi per favore?