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
| char* lecture(int fd)
{
/* Déclaration des variables qui nous seront utiles */
int n = 0;
/* Allocation d'une zone mémoire allant pouvoir contenir la chaîne lue dans le fichier */
char *chaine = NULL;
chaine = malloc((TAILLEBUF +1) * sizeof(char)) ;
if (chaine == NULL) { /* On vérifie que le malloc s'est bien effectué */
fprintf(stderr, "Erreur lors de l'allocation mémoire \n");
exit(EXIT_FAILURE);
}
/* On effectue la lecture caractères après caractères jusqu'à rencontrer un saut de ligne */
do {
read(fd, &chaine[n], sizeof(char));
n++;
}
while (n < TAILLEBUF && chaine[n-1] != '\n');
/* On formate la chaîne de caractères obtenue en ajoutant un \0 à la fin */
chaine[n] = '\0';
/* On affiche un message d'erreur si la boucle s'est terminée avant d'avoir pu lire la ligne entièrement */
if(n == TAILLEBUF) {
fprintf(stderr, "Erreur : La ligne était trop longue et n'a pas été lue entièrement !\n");
exit(EXIT_FAILURE);
}
/* Si la lecture s'est bien passée, on retourne notre chaîne */
else
return chaine;
} |
Partager