#1 Le 16/03/2007, à 16:25
- benlaug
Réaction incompréhensible avec fgets()
Bonjours à tous,
J'écris parce que je ne comprends pas pourquoi le message "error" de mon programme suivant ne s'affiche jamais ?
#include <stdio.h>
int main() {
printf("> ");
char buffer[5];
if (fgets(buffer, 5, stdin) == NULL)
printf("error\n");
printf("%s\n", buffer);
return 0;
}
Je peine vraiment à comprendre l'utilisation de cette fonction que je trouve pire que scanf (on me l'a imposé).
Merci à tous,
Ben
Dernière modification par benlaug (Le 16/03/2007, à 16:25)
Hors ligne
#2 Le 16/03/2007, à 16:32
- Gari
Re : Réaction incompréhensible avec fgets()
copie du "man fgets"
VALEUR RENVOYEE
gets() et fgets() renvoient le pointeur s si elles réussissent, et NULL en cas d'erreur, ou si la fin de fichier est atteinte avant d'avoir pu lire au moins un caractère.
Pourquoi voudrais-tu que le message d'erreur s'affiche ?
si tu veux vraiment le faire s'afficher, essaie de faire <CTRL+D> une fois le programme lancé.
Et sinon fgets est plus sécurisé que scanf.
Dernière modification par Gari (Le 16/03/2007, à 16:33)
Hors ligne
#3 Le 16/03/2007, à 16:39
- benlaug
Re : Réaction incompréhensible avec fgets()
Oui, en effet le message s'affiche (c'est déjà ça ). Néanmoins, j'aimerais qu'il s'affiche lorque je dépasse la taille du buffer (5). Comment est-ce que je pourrais faire ça ?
EDIT : Voilà, j'ai trouvé, en tout cas merci ! Grâce à toi j'ai trouvé comment faire ma gestion d'EOF.
Dernière modification par benlaug (Le 16/03/2007, à 16:48)
Hors ligne