Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/03/2007, à 17: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, à 17:25)

Hors ligne

#2 Le 16/03/2007, à 17: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, à 17:33)

Hors ligne

#3 Le 16/03/2007, à 17:39

benlaug

Re : Réaction incompréhensible avec fgets()

Oui, en effet le message s'affiche (c'est déjà ça smile). 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, à 17:48)

Hors ligne