Probleme en c avec fgets

Résolu
Signaler
Messages postés
5
Date d'inscription
mardi 21 février 2006
Statut
Membre
Dernière intervention
11 juin 2009
-
Messages postés
571
Date d'inscription
vendredi 30 décembre 2005
Statut
Membre
Dernière intervention
12 juillet 2012
-
Bonjour voila dans mon programme le code suivant est zappé ,le programme 'zap' la fonction fgets si quelqu'un savait pourquoi...merci d'avance...
printf("\n\n\n\n\n\n\n           Pour quelle(s) raison(s) vous avez besoin d'un mot de passe?\n\n");
                                 printf("       important ne pas appuyer sur entrer avant d'avoir redige la phrase.\n\n\n");
                                
                                 fgets(var, 250, stdin);
                                 var[strlen(var) - 1] = '\0';
                                 if (longueurChaine(var)==0)
     
                                        {
                                         system("cls");
                                         printf("\n\n\n\n\n Vous n'avez rien taper,veuillez relancer le programme et taper au moin un mot\n");
                                         system("pause");
                                          return 0;
                                        } 

5 réponses

Messages postés
192
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
30 janvier 2008

c'est bien char var[250], car char * var[250] est un tableau de
pointeurs sur des char, soit un tableau de chaines de caractères et ce
n'est pas ce que tu souhaites. Donc finalement deux solutions pour
déclarer var:

- en statique comme tu as fais:
char var[256];

et c'est certainement la meilleure solution ici


- en dynamique:
char * var;

var (char*)malloc((256+1)*sizeof(char)); // enfin ici sizeof(char) est inutile car 1


En n'oubliant pas à la fin de détruire var par free(var);


Ensuite, fgets s'emploie plutôt pour la lecture dans des fichiers (flux) donc utilises
gets(var);

ou
scanf("%s", var);
Messages postés
192
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
30 janvier 2008

Cela vient probablement de var que tu n'as pas dû allouer ou définir convenablement. Comment as-tu défini et initialisé var?
Messages postés
5
Date d'inscription
mardi 21 février 2006
Statut
Membre
Dernière intervention
11 juin 2009

j'avais definit var par char var[250],je viens de mettre char *var[250] et j'ai rajouté les pointeurs ans le programme ;la fenetre ne zappe plus le passage mais se fige 2 seconde puis se ferme automatiquement....
Messages postés
5
Date d'inscription
mardi 21 février 2006
Statut
Membre
Dernière intervention
11 juin 2009

J'ai validé ta réponse car l'erreur ne vient pas de fgets mais vient de la structure de mon programme car si je compile juste la fonction gets que tu m'a donné et que je l'affiche a l'écran ça marche niquel mais une fois intégré au programme ça deconne.Je vois d'ou viens l'erreur grace a ton aide merci bonne soirée.
Messages postés
571
Date d'inscription
vendredi 30 décembre 2005
Statut
Membre
Dernière intervention
12 juillet 2012
3
var = malloc(256);