Scanf("%c",&a);les caractere???????

tchsimons Messages postés 207 Statut Membre -  
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité -
Bonjour,
//c'est unprogramme sans interet ;mais sa resolution m'aide à faire autre chose.
#include<stdio.h>
void main()
{
int i,z;
char a;
for(i=0;i<5;i++)
{
printf("entrez un caractere");
scanf("%c",&a);
printf("entrez un nombre");
scanf("%d",&z);
}
}
/*******************************************/
en principe je doit pouvoir lire et ecrire un caractere puis un chiffre 5 fois avant la fi du programme.
Mais au 2eme passage dans la boucle,le systeme ne laisse plus l'ocasion d'entrer le caractere.je ne comprend pas ce qui ne va pas.Est ce qu'il ya qeulqeu chose d'omis ouqeu je ne metrise pas?
j'ai remplace scanf par getc puis getch() Lememe resultat est affiche. aidez moi je dioit utiliser un principe semùblable pour recuperer les char et les int pour les affecter a d'autres variables.. mon compilateur est le borland c++
A voir également:

1 réponse

lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
Salut,

Pour lire un caractère depuis clavier utilise plutôt getchar.

Après avoir écrit un nombre entier un caractère saute de ligne '\n' reste dans le buffer qui est lui par le suivant getchar
donc au prochain passage i=1 z contiendra ce caractère qui traine.
Fait plutôt comme ça
lami20j@debian:~/trash$ cat ccm31_ecrirecaract.c
#include<stdio.h>

int main()
{
        int i,z;
        char a;
        for(i=0;i<5;i++)
        {
                printf("entrez un caractere : ");
                a=getchar();//scanf("%c",&a);
                printf("entrez un nombre : ");
                scanf("%d",&z);
                getchar();
                printf("a = %c et z = %d\n",a,z);
        }
        return 0;
}
Voici le résultat
lami20j@debian:~/trash$ gcc ccm31_ecrirecaract.c
lami20j@debian:~/trash$ ./a.out
entrez un caracterea
entrez un nombre5
entrez un caractereentrez un nombre^C
lami20j@debian:~/trash$ vi ccm31_ecrirecaract.c
lami20j@debian:~/trash$ gcc ccm31_ecrirecaract.c
lami20j@debian:~/trash$ ./a.out
entrez un caractere : a
entrez un nombre : 5
a = a et z = 5
entrez un caractere : b
entrez un nombre : 6
a = b et z = 6
entrez un caractere : c
entrez un nombre : 8
a = c et z = 8
entrez un caractere : e
entrez un nombre : 9
a = e et z = 9
entrez un caractere : p
entrez un nombre : 10
a = p et z = 10

2