Probleme boucle For en C
Fermé
sou
-
31 janv. 2010 à 13:38
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 31 janv. 2010 à 14:45
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 31 janv. 2010 à 14:45
A voir également:
- Probleme boucle For en C
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Copytrans heic for windows - Télécharger - Visionnage & Diaporama
- Download instagram for pc - Télécharger - Divers Communication
- Saveaspdf.exe for office 2007 - Télécharger - Bureautique
- Idm for mac - Télécharger - Téléchargement & Transfert
3 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
31 janv. 2010 à 13:55
31 janv. 2010 à 13:55
Salut,
C'est normal. Lorsque l'utilisateur va écrire un caractère et appuyer sur la touche entrée pour valider, il y aura deux caractères qui vont être envoyés dans le buffer clavier (sa touche et le '\n').
Soit tu prends que les caractères différents du '\n', soit tu vides explicitement le buffer après chaque itération ou soit tu ne fais de boucle mais tu lis directement le mot avec fgets (ou scanf("%11s",tab);
Par ailleurs, n'oublie pas d'insérer le '\0' manuellement si tu passes par par scanf("%c",tab+i). A noter que pour lire un caractère, on utilise plutôt getchar() qui est moins gourmand.
Et enfin n'oublie pas le return 0 final.
Cdlt,
C'est normal. Lorsque l'utilisateur va écrire un caractère et appuyer sur la touche entrée pour valider, il y aura deux caractères qui vont être envoyés dans le buffer clavier (sa touche et le '\n').
Soit tu prends que les caractères différents du '\n', soit tu vides explicitement le buffer après chaque itération ou soit tu ne fais de boucle mais tu lis directement le mot avec fgets (ou scanf("%11s",tab);
Par ailleurs, n'oublie pas d'insérer le '\0' manuellement si tu passes par par scanf("%c",tab+i). A noter que pour lire un caractère, on utilise plutôt getchar() qui est moins gourmand.
Et enfin n'oublie pas le return 0 final.
Cdlt,
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
31 janv. 2010 à 13:58
31 janv. 2010 à 13:58
Salut,
A chaque saisie d'une lettre il y a un \n (saut de ligne) qui traine dans le bouffer. Du coup tu saisis 6 caractères et la boucle for se finie puisque il avait aussi 6 \n
A chaque saisie d'une lettre il y a un \n (saut de ligne) qui traine dans le bouffer. Du coup tu saisis 6 caractères et la boucle for se finie puisque il avait aussi 6 \n
#include <stdio.h> #include <stdlib.h> int main() { int intermediaire=0; char tab[12]; int i=0,j=0; system("Cls"); printf( "saisir Vos 12 valeurs \n"); for (i=0;i<12;i++) { scanf("%c",&tab[i]); while(getchar()!='\n') ; } }
Olalalala ce n'etait que ça....
Merciii beaucoup en tout cas , je viens d'économiser quelques heures de recherches .
Cordialeemnt
Merciii beaucoup en tout cas , je viens d'économiser quelques heures de recherches .
Cordialeemnt
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
31 janv. 2010 à 14:45
31 janv. 2010 à 14:45
Re,
ce n'etait que ça....
Il ne faut pas minimaliser les effets des caractères qui trainent dans le buffer
Je te conseille de lire cette article
ce n'etait que ça....
Il ne faut pas minimaliser les effets des caractères qui trainent dans le buffer
Je te conseille de lire cette article