
Envoyé par
Médinoc
En fait, Skyrunner te dit, de manière que je qualifierais d'importune, d'utiliser les fonctions basées sur les FILE * (et les FILE * eux mêmes) au lieu des fonctions utilisant des descripteurs de fichiers.
Ceci étant du au fait qu'en dépit de leurs performances brutes parfois (rarement) inférieures, elles ont le mérite d'être standard, mérite qui semble prévaloir sur tous les autres ici.
Moi à présent, je vais tenter de te donner un avis utile : essaie d'afficher la valeur retournée par read(), et aussi, ouvre ton fichier en O_RDONLY si tu ne fais que le lire (peut-être que le "pointeur de lecture" n'est pas correctement initialisé quand on ouvre en mode O_RDWR).
Désolé mais j'etais pressé par le temps, je n'ai pas eu le temps de m'etendre sur le sujet.
Si tu veux persister dans les descripteur test comme l'a dis Médinoc le code de retour de read
1 2 3 4
| if(read(d, s, sizeof(s)) == -1) {
perror("read()");
exit(errno);
} |
Méthode avec FILE *
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
void OuverFichier()
{
FILE *fich; // fichier
char s[100]; // buffer
fich = fopen("canard.txt",r);
if ((fich==NULL))
{
puts("Echec ouverture du fichier canard.txt");
/* exit(1);*/
}
if(fread(s, sizeof(s), 1, fich) < 1) {
perror("fread");
exit(errno);
}
puts(s);
fclose(fich);
} |
Ne pas oublier
D'ailleurs en editant ce message j'ai trouvé une/l' erreur dans le programme.
d == open("canard.txt",O_RDWR);
L'erreur c'est le == ( il n'en faut qu'un seul)
Partager