1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
char* LireLigneFichier(char *lecture, int taille, FILE *pf)
/* Cette fonction place dans "lecture" une chaîne de "taille" caractères,
à partir d'une ligne du fichier "pf".
Si la longueur de la ligne est supérieure à "taille", seulement les "tailles"
premiers caractères de la ligne sont placé dans "lecture", et le reste
de la ligne est ignoré.
En revanche la lecture suivante sera effectuée sur la ligne suivante,
on pourra ainsi lire cette nouvelle ligne sans problème due au reste
de la ligne précédente.
Retourne NULL si rien n'a été lu. */
{
char *temp=NULL;
char *res;
char buffer[1024]; /* "buffer" est utilisée pour lire une ligne entière
du fichier.
Cette fonction peu lire au maximum des lignes de
"1024-'\n'-1" caractères. */
res=fgets(buffer, sizeof(buffer), pf); /* place la ligne lu dans
buffer ('\n' inclut), d'une taille
de sizeof(buffer)-1 carac.
retourne NULL si rien n'a été lu */
/* exemple de lecture: "abc\n\0" */
temp=strchr(buffer, '\n'); /* recherche la ou se trouve le '\n' */
if(temp!=NULL)
*temp='\0'; /* écrasement du '\n'.
exemple: "abc\n\0" devient "abc\0\0" */
/* note: sous linux(gcc) il faut mettre *(temp-1)='\0'
sous dev-c++(gcc) *temp='\0' */
strncpy(lecture, buffer, taille);
lecture[taille-1]='\0'; /* car si la taille de "buffer" est >= à "taille",
alors il n'y aura pas de '\0' terminal dans
"lecture".
Donc on écrase le dernier caractére avec '\0' */
return res;
} |
Partager