Problème en C
Résolu
martur
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je suis nulle en programmation c,j'ai voulu creer un tableau de caractère.(ça parait trop simple).alors j'ai fait les lignes suivantes:
char t[20];
int n;
printf ( " donner la taille du 1er tableau\n");
scanf("%d",&n);
for (i=0 ; i<n ; i++)
{
printf("donner l'element %d ",i);
scanf("%c",&t[i]);
}
le problème c'est que lors de l'exécution ,j'ai l'affichage suivant
"donner la taille du 1er tableau"..alors je donne la taille du tableau par exemple 7
donner l'element 0 donner l'element 1
lc'est à dire il me donne la main seulement pour faire entrer la deuxieme valeaur...et aprés il m'affiche
donner l'element 2 donner l'element 3 ...je tape la valeaur 3..et puis
donner l'element 4 donner l'element 5 ....et ainsi de suite
sachant que tout va bien si je change vers un tableau d'entiers,je sais pas ce qui ce passe pour ce tableau de caractères..
aidez moi s'il vous plait
je suis nulle en programmation c,j'ai voulu creer un tableau de caractère.(ça parait trop simple).alors j'ai fait les lignes suivantes:
char t[20];
int n;
printf ( " donner la taille du 1er tableau\n");
scanf("%d",&n);
for (i=0 ; i<n ; i++)
{
printf("donner l'element %d ",i);
scanf("%c",&t[i]);
}
le problème c'est que lors de l'exécution ,j'ai l'affichage suivant
"donner la taille du 1er tableau"..alors je donne la taille du tableau par exemple 7
donner l'element 0 donner l'element 1
lc'est à dire il me donne la main seulement pour faire entrer la deuxieme valeaur...et aprés il m'affiche
donner l'element 2 donner l'element 3 ...je tape la valeaur 3..et puis
donner l'element 4 donner l'element 5 ....et ainsi de suite
sachant que tout va bien si je change vers un tableau d'entiers,je sais pas ce qui ce passe pour ce tableau de caractères..
aidez moi s'il vous plait
2 réponses
Bonjour,
Lorsque tu tapes un caractère et que tu valides par entrée, tu as l'impression d'avoir tapé un caractère, mais tu en as tapé en fait deux. Le second correspond au code de la touche entrée ('\n'). C'est ce dernier qui te fait sauter les cases du tableau.
Pour corriger, il suffit d'insérer un simple getchar(); après le scanf("%c",&t[i]);
D'ailleurs plutôt qu'un scanf("%c",&t[i]); t'aurais pu mettre t[i]=getchar();
Sinon pour information, tu peux mettre directement scanf("%19s",t); au lieu de mettre une boucle for / scanf.
Cdlt,
Lorsque tu tapes un caractère et que tu valides par entrée, tu as l'impression d'avoir tapé un caractère, mais tu en as tapé en fait deux. Le second correspond au code de la touche entrée ('\n'). C'est ce dernier qui te fait sauter les cases du tableau.
Pour corriger, il suffit d'insérer un simple getchar(); après le scanf("%c",&t[i]);
D'ailleurs plutôt qu'un scanf("%c",&t[i]); t'aurais pu mettre t[i]=getchar();
Sinon pour information, tu peux mettre directement scanf("%19s",t); au lieu de mettre une boucle for / scanf.
Cdlt,
system
merci fiddy..
et aussi il est mieux d 'utilisé la fonction gets(t) pour lire la chaine à la place de scanf. cette fonction est utilitaire au tableau de chaine de caractere...