| 12
 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