Le probleme du fscanf c'est que ta chaine de descripteur doit respecter exactement la syntaxe du fichier que tu lis.
Avec le code que tu vient de donner et le fichier texte suivant, ca pose probleme :
1:2:3:4
5:6:7:8
Car la syntaxe n'est pas respectee par ton descripteur "%d:%d:%d\n"
2 possibilites :
-soit tu avance ton pointeur 'p_fich' a la main avec un fseek() si ton fichier a lire est suffisamment bien formate.
-soit tu bufferise le reste de ta ligne en la stockant dans une chaine de caractere, mais ca ne marchera que si tu n'a pas d'espace(ou alors il faut que tu rajoute autant de variables buffer que necessaire)
Exemple:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
int a=0, h,m,s;
FILE* p_fich;
char buffer[100];
p_fich=fopen("test.txt","r" ) ;
while(a<5)
{
fscanf(p_fich,"%d:%d:%d%s\n",&h,&m,&s,buffer);
printf("%d:%d:%d:%s\n",h,m,s);
printf("buffer:%s\n",buffer) ;
a++;
}
return 1;
}