Probleme en c avec fgets

Résolu
le_mariole Messages postés 5 Date d'inscription mardi 21 février 2006 Statut Membre Dernière intervention 11 juin 2009 - 28 juin 2007 à 14:11
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 - 28 juin 2007 à 21:02
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

THEwarrior333 Messages postés 192 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 30 janvier 2008
28 juin 2007 à 19:59
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);
3
THEwarrior333 Messages postés 192 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 30 janvier 2008
28 juin 2007 à 15:27
Cela vient probablement de var que tu n'as pas dû allouer ou définir convenablement. Comment as-tu défini et initialisé var?
0
le_mariole Messages postés 5 Date d'inscription mardi 21 février 2006 Statut Membre Dernière intervention 11 juin 2009
28 juin 2007 à 19:22
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....
0
le_mariole Messages postés 5 Date d'inscription mardi 21 février 2006 Statut Membre Dernière intervention 11 juin 2009
28 juin 2007 à 20:17
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
28 juin 2007 à 21:02
var = malloc(256);
0