Verification si il'ya une faute dans cette program
Fermé
chdoula22
Messages postés
2
Date d'inscription
mercredi 5 février 2014
Statut
Membre
Dernière intervention
3 mars 2014
-
Modifié par jipicy le 3/03/2014 à 23:38
null - 13 mai 2014 à 13:21
null - 13 mai 2014 à 13:21
A voir également:
- Verification si il'ya une faute dans cette program
- Vérification url - Guide
- Verification de l'identité du serveur impossible - Forum WiFi
- Vérification d'état du pc - Guide
- En cours de verification le bon coin - Forum Hotmail / Outlook.com
- Dl protect link verification en cours - Forum Téléchargement
2 réponses
Bonjour,
compile ton programme, tu verras bien si ça marche, le debugger te trouvera les éventuelles fautes. Il sert à ça.
Cordialement.
compile ton programme, tu verras bien si ça marche, le debugger te trouvera les éventuelles fautes. Il sert à ça.
Cordialement.
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
12 mai 2014 à 00:20
12 mai 2014 à 00:20
Salut chdoula22,
Quelques indications générales, parce que ton code est trop long.
Tu devrais créer le fichier en mode texte, et non binaire, et y stocker des chaînes de caractères seulement, même pour les données ayant des types numériques.
Si tu tiens à utiliser des types numériques, il te faudra les sérialiser, par exemple, comme cela : http://troydhanson.github.io/tpl/index.html mais ce n'est vraiment pas nécessaire dans ton projet, à mon sens.
Tes %s dans tes scanf ne vont prendre qu'un mot, alors si à "rue", je tape "rue de la Liberté", tu n'auras que "rue", et "de", ira à "ville", etc. Utilise fgets avec stdin avec l'indication du nombre maximal de caractères à prendre en compte, ou un spécificateur de taille au %s dans ton scanf (par exemple
Tu devrais retirer tes fflush(stdin), ce n'est pas du C standard et ce n'est pas portable.
Pour vider le flux stdin après un scanf, tu fais comme cela :
http://c-faq.com/stdio/stdinflush2.html
Dal
Quelques indications générales, parce que ton code est trop long.
Tu devrais créer le fichier en mode texte, et non binaire, et y stocker des chaînes de caractères seulement, même pour les données ayant des types numériques.
Si tu tiens à utiliser des types numériques, il te faudra les sérialiser, par exemple, comme cela : http://troydhanson.github.io/tpl/index.html mais ce n'est vraiment pas nécessaire dans ton projet, à mon sens.
Tes %s dans tes scanf ne vont prendre qu'un mot, alors si à "rue", je tape "rue de la Liberté", tu n'auras que "rue", et "de", ira à "ville", etc. Utilise fgets avec stdin avec l'indication du nombre maximal de caractères à prendre en compte, ou un spécificateur de taille au %s dans ton scanf (par exemple
scanf("%24s", tabcontact[taille].adresse.rue);).
Tu devrais retirer tes fflush(stdin), ce n'est pas du C standard et ce n'est pas portable.
Pour vider le flux stdin après un scanf, tu fais comme cela :
while((c = getchar()) != '\n' && c != EOF) /* discard */ ;
http://c-faq.com/stdio/stdinflush2.html
Dal
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
12 mai 2014 à 07:24
12 mai 2014 à 07:24
Le %24s ne sélectionne que le premier mot également.
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
12 mai 2014 à 10:32
12 mai 2014 à 10:32
Oui, au temps pour moi, je l'utilise rarement (au profit de fgets). Il faut donc encore compliquer l'expression de la façon suivante :
Dal
scanf("%24[^\n]",tabcontact[taille].adresse.rue);pour que scanf prenne tous les caractères jusqu'au
'\n', à l'exclusion de ce caractère, et dans la limite de 24 caractères.
Dal
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
12 mai 2014 à 13:50
12 mai 2014 à 13:50
Voui, je conseille également fgets() :-).