Bonjour,
Voila, je suis entrain de realiser un petit programme dans le cadre de mes etudes, et pour l'instant le sujet est "simple" je dois parser un fichier et sortir des erreurs (ou non) suivant une syntaxe precise.
Pour ce faire, j'utilise la fonction read pour parcourir le fichier, caractere par caractere.
Histoire d'eviter un seg-falt completement indetectable par l'humain, j'utilise perror();
Et ce dernier me sort systematiquement une erreur (Ce qui n'etait pas le cas au debut) "read failed : Bad Adresse"
Alors voila un bout de mon code
Donc en faite mon probleme, c'est que systematiquement il me pete une erreur d'adresse quand je tente de lancer mon programme avec un fichier qui contient au moins un caractere.
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 /* ** Boucle principale du parsing **/ while ((i = read(fd,tmp,1))) { if ( i < 0) { if (errno == EINTR) { continue; } else { perror("read failed"); return (2); } } /* ** Ici y a la suite de ma boucle principale */ }
Si le fichier ne contient pas de caractere le programme s'execute normalement (Du coups mon programme devient inutile, c'est con hein...)
Je dois avouer que je suis un peu perdu quand je vois le comportement de perror....
Merci d'avance...
EDIT : En faite, c'est pas le comportement de perror() qui me gene, mais plutot celui de read, pourquoi es ce que la lecture n'est pas possible !
Plus haut dans mon code, je gere les differentes erreurs genre, ouverture, existence du fichiers etc... et ca l'air de bien se passer, alors pourquoi read veut pas !?
Partager