Je bosse actuellement sur un programme 'repertoire' qui liste les contacts qu'on ajoute dans un fichier 'contacts.rep'.
Le programme marche sans aucun problème lorsque je fais simplement 'ajouter contact -> voir tous les contacts', mais quand j'implémente un choix au début (1. Ajouter un contact / 2. Voir les contacts), j'ai un petit problème : quand je choisis "Ajouter un contact" en tapant 1, ça lance bien les instructions du if correspondant, mais ça me met
Nom du contact : Prenom du contact : (là je peux taper)
Adresse du contact :
Après, ça marche, mais pourquoi ce bug avec le nom du contact ?
Met plutot scanf("%c", &choix);, ou alors un fflush(stdin) après le getchar, mais c'est un peu plus gore. (de manière générale il ne faut pas mixer les scanf, qui sont de "l'entrée formatée", et les fgets/getchar, qui sont de l'entrée brute)
Avec le scanf ça ne marche pas, par contre en rajoutant un getchar(); ça marche
Par contre, je viens de me rendre compte que j'ai un autre problème :\
Quand je choisis "2. Voir mes contacts", le fichier ne s'ouvre pas, et le texte d'erreur est renvoyé
Hum, ça ne vide pas le buffer mais ça lit un caractère et saute les caractères qui suivent jusqu'à la prochaine ligne ; ce qui est en général le comportement voulu dans une application interactive.
Bah le * derrière le % semble signifier qu'on ne souhaite pas stocker la variable.
%[^\n] c'est la méthode standard pour lire tout les char jusqu'à un \n, et le %c final c'est pour le \n (final).
Pour revenir sur le problème initial, (car normalement scanf("%*c"); ca doit suffire ou un truc dans le genre)
Il semble que ta déclaration de données dans ta structure ne soit pas cohérente avec ce que tu souhaites y stocker !
Tu veux stocker un "nom" dans un simple "char"... au mieux, tu n'auras que la première lettre qui a été entrée...
Edit : le scanf("%d", &choix); semble prendre aussi le \n en compte... donc un petit scanf("%*c"); juste après est suffisant pour que ca marche à peut près correctement
Je dis peut-être une bêtise, mais ce serait pas plus facil en cpp ce prog?
A mon avis, c'est a peu près aussi facile en C qu'en C++ (comme pas mal de programmes, enfait). Le code sera juste organisé différement (et utilisera la syntaxe du Cpp bien sur : )
Avec le truc de rz0 j'ai le même bug qu'au départ :S
Et j'ai toujours pas résolu le bug qui fait que le fichier ne s'ouvre pas
[C] Bug d'un programme, cause inconnue
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
If you'd like to join us, read "How do we work at OpenClassrooms"! :)