2017-11-01 3 views
-2

Nachdem der erste Satz eingegeben wurde, gibt dieser Code jedes Mal "Zeichen eingeben" aus - warum?Warum wird dieses c-Programm zweimal gedruckt?

+3

Legen Sie eine leere, bevor% scanf („% c“, &c); Andernfalls wird die neue Linie Zeichen, die das entspricht gelesen werden Taste Enter ist auch gelesen –

+0

Es liest das Zeichen, schreibt die Aufforderung, es liest einen Zeilenumbruch, schreibt die Eingabeaufforderung – PSkocik

+0

Ich bin 100% sicher, das ist ein Duplikat, aber ich kann nicht finden, was. –

Antwort

1

führen, dass Sie eine Nummer drücken PLUS eingeben und geben Sie wird durch scanf() beim nächsten Aufruf

#include <stdio.h> 

int main(void) { 
    char c = 'A'; 
    while (c != ',') { 
    printf("Input a character:"); 
    if (scanf("%c", &c) != 1) { 
     return 0; // we stop if user don't input anything 
    } 
    if (c >= '0' && c <= '9') { 
     printf("%d\n", (int)c); // by the way did you want (int)(c - '0') ? 
    } else { 
     printf("enter a number ! you enter %d\n", c); 
    } 
    } 
} 
+1

Ein Leerzeichen vor '% c' sollte ausreichen = >>' "% c" ' – Michi

Verwandte Themen