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
106485010510997108