Problème avec scanf
Fermé
salomelette
Messages postés
4
Date d'inscription
dimanche 31 janvier 2016
Statut
Membre
Dernière intervention
1 février 2016
-
31 janv. 2016 à 19:34
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 1 févr. 2016 à 23:03
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 1 févr. 2016 à 23:03
A voir également:
- Scanf java
- Scanf windows - Guide
- Sscanf -> char *chaine et char chaine ✓ - Forum Programmation
- Scanf getchar ✓ - Forum C
- Scanf [^\n] ✓ - Forum C
- Scanf en c++ - Forum C++
3 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
31 janv. 2016 à 20:48
31 janv. 2016 à 20:48
Bonjour,
Pourtant le compilateur précise le problème en rouge :-).
Tu ignores le retour de scanf().
Essaie : (void)scanf(...)
Ou alors utilise l'attribut précisé par ton compilateur pour que ce dernier ne lève pas de warning dans ce cas.
Pourtant le compilateur précise le problème en rouge :-).
Tu ignores le retour de scanf().
Essaie : (void)scanf(...)
Ou alors utilise l'attribut précisé par ton compilateur pour que ce dernier ne lève pas de warning dans ce cas.
Mr-Je-pense
Messages postés
15
Date d'inscription
dimanche 31 janvier 2016
Statut
Membre
Dernière intervention
2 février 2016
1
Modifié par Mr-Je-pense le 31/01/2016 à 22:43
Modifié par Mr-Je-pense le 31/01/2016 à 22:43
Bonjour à tous !
j'ai trouvé la solution:
merci à "fiddy" :)
j'ai trouvé la solution:
int c;
do {
c = getchar();
} while (c != '\n' && c != EOF);
merci à "fiddy" :)
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
Modifié par fiddy le 31/01/2016 à 22:45
Modifié par fiddy le 31/01/2016 à 22:45
Il ne te reste plus qu'à déclarer c, et c'est parfait.
Note, tu peux même faire :
Mais cela n'a rien à voir avec la question ;-).
Note, tu peux même faire :
int c; while ( (c=getchar()) != '\n' && c != EOF );
Mais cela n'a rien à voir avec la question ;-).
Mr-Je-pense
Messages postés
15
Date d'inscription
dimanche 31 janvier 2016
Statut
Membre
Dernière intervention
2 février 2016
1
>
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
31 janv. 2016 à 22:44
31 janv. 2016 à 22:44
D'accord ;-)
Mr-Je-pense
Messages postés
15
Date d'inscription
dimanche 31 janvier 2016
Statut
Membre
Dernière intervention
2 février 2016
1
Modifié par Mr-Je-pense le 31/01/2016 à 19:44
Modifié par Mr-Je-pense le 31/01/2016 à 19:44
Bonjour,
essai d'ajouter devant chaque scanf :
:)
Désolé il me parait que tu es sur linux, je pense que fflush(stdin); ne marche que sous windows..
essai d'ajouter devant chaque scanf :
fflush(stdin);
:)
Désolé il me parait que tu es sur linux, je pense que fflush(stdin); ne marche que sous windows..
salomelette
Messages postés
4
Date d'inscription
dimanche 31 janvier 2016
Statut
Membre
Dernière intervention
1 février 2016
31 janv. 2016 à 19:49
31 janv. 2016 à 19:49
Tu as raison, ca ne marche pas :(
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
31 janv. 2016 à 20:45
31 janv. 2016 à 20:45
fflush(stdin); est à bannir. Comportement indéterminé...
Pou vider le buffer clavier, il faut passer par une boucle while getchar() jusqu'à rencontrer le '\n' ou EOF.
Pou vider le buffer clavier, il faut passer par une boucle while getchar() jusqu'à rencontrer le '\n' ou EOF.
Mr-Je-pense
Messages postés
15
Date d'inscription
dimanche 31 janvier 2016
Statut
Membre
Dernière intervention
2 février 2016
1
>
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
31 janv. 2016 à 22:41
31 janv. 2016 à 22:41
Oui. Tu as raison. :)
1 févr. 2016 à 20:38
Je vais essayer avec void. Merci :)
1 févr. 2016 à 20:42
1 févr. 2016 à 23:03
Cela signifie que si tu ne testes pas la valeur de retour, ça remonte un warning.
Teste donc la valeur de retour du scanf() et ça devrait le faire. Par exemple :
Note : scanf() renvoie le nombre de variables affectées.