Bonjour,
Je viens demander des conseils par rapport à ma fonction get_next_line, qui doit à chaque fois qu'elle est appelé , écrire la ligne suivante d'un fichier texte.
J'ai un problème concernant le buffer , en fait le READ_SIZE (taille de buffer) peut etre inférieur au nombre de caractères de l'ensemble du fichier or il faut que je sois capable de lire toutes les lignes si on me le demande (comme c'est le cas avec le main ci dessous).
Pour l'instant j'affiche correctement les trois première lignes d'u fichier mais la lecture du fichier s'arrete avec la taille du buffer .Mon but est donc d'affiché le reste du fichier jusqu'au bout (sans modifier directement le READ_SIZE).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include "get_next_line.h" char *get_next_line(const int fd) { char *string; static char buff[READ_SIZE]; static int z; static int cmp; int y; y = 0; string = malloc(READ_SIZE * z); z = read(fd, buff, READ_SIZE); while (buff[cmp] != '\n') { string[y] = buff[cmp]; if (buff[cmp] == '\0') { return(0); } cmp += 1; y += 1; } if (buff[cmp] == '\n') cmp += 1; string[y] = 0; return (string); }n'hesitez pas si vous avez des question
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 int main(int ac, char **av) { char *s; while ((s = get_next_line(open(av[1], O_RDONLY)))) { my_putstr(s); my_putchar('\n'); free(s); } return 0; }![]()
Partager