Bonsoir à tous,
je viens faire appel à vous parce que j'ai encore un petit souci.
Je dois lire un fichier qu'on nous passe en paramètre.
J'ouvre d'abord ce fichier avec la fonction open qui nous renvoie un entier (file descriptor).
fd = open(argv[i], O_RDONLY);
Après avoir tester la valeur du fd, pour être sur qu'il n'y ait pas eut de problème. Dans le cas où l'ouverture s'est faite sans aucun problème, je renvoie mon fd pour une lecture du fichier.
byte_read = read(fd, buffer, BUFFER_SIZE);
La fonction read renvoie un entier qui représente le nombre d'octet lu, et BUFFER_SIZE est le nombre d'octet à lire. (si j'ai fait une erreur dites le moi svp
).
Ce que je souhaite faire c'est copier ce que je lis dans une chaine de caractère (donc un char *) ou une tableau de chaîne de caractère (donc un char **). J'hésite entre les deux parce que le fichier comporte plusieurs lignes.
Je pensais représenter le truc comme ca:
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
| int byte_read;
int x;
int y;
char buffer[BUFFER_SIZE];
char **chaine;
x = 0;
y = 0;
byte_read = 1;
chaine = malloc(sizeof(**chaine));
while (byte_read != 0)
{
while (buffer != ?)
{
while (buffer != '\n')
{
byte_read = read(fd, buffer, BUFFER_SIZE);
if (byte_read == -1)
return (-1);
chaine[y][x] == buffer;
y++;
}
x++;
}
} |
Je pensais lire le fichier tant que le buffer n'a pas atteint la fin de la ligne (du fichier) c'est-à-dire '\n' et ceux tant que je n'ai pas atteinds la dernière ligne, et bien sur à chaque ligne je copie ce que j'ai lu.
x représente le caractère dans la ligne et y le "numéro" de ligne.
Le code est ma vision mais malheuresement comme ceci je n'arrive pas à faire ce que je veux et je commence à avoir des doutes sur la façon dont j'ai codé.
Si quelqu'un veut bien me donner un indice d'où est l'erreur
Partager