2010-11-29 6 views
1

J'essaie d'imprimer les valeurs ASCII de 3 caractères de type caractère. Lorsque je saisis le premier caractère, il n'imprime pas la valeur du caractère. Après le premier caractère, il commence à donner la valeur.C Imprime un caractère de plus sans valeur

#include <stdio.h> 
int main() { 
    char ch; 
    int t; 
    while(t < 3){ 
     scanf("%c\n", &ch); 
     printf("%c - %d\n", ch,ch); 
     t++; 
    } 
} 

http://i54.tinypic.com/2mdqb7d.png

+7

Il pourrait être une bonne idée d'initialiser 't' ... – cdhowie

+0

Utiliser' scanf ("% c", &ch); 'qui va sauter tous les espaces blancs. –

+0

changé t à t = 0 mais toujours même. J'utilise gcc – Ahmet

Répondre

2

variable t est pas automatiquement initialisé à 0 par le compilateur. Vous devez donc initialiser t avec 0. Si printf n'imprime pas immédiatement, cela signifie que les données sont mises en mémoire tampon. Si vous voulez voir immediatley, vous pouvez envisager de vider stdout juste après printf.

1

J'ai vu plusieurs fois, et je ne sais pas la cause, mais la solution qui fonctionne est:

scanf ("\ n% c", & ch);

Cela a probablement quelque chose à voir avec le caractère de fin de ligne tamponnée.

Questions connexes