2017-01-12 6 views
0

Ich habe versucht, mich selbst zu lehren C von der Website http://www.cprogramming.com/. Ich bin zu dem Code gekommen, der eine Eingabe erfordert. HierDrücken Sie Enter in C-Eingabe-Programm

ist der Code:

#include <stdio.h> 

int main() 
{ 
    int this_is_a_number; 
    printf("Please enter a number: "); 
    scanf("%d", &this_is_a_number); 
    printf("You entered %d", this_is_a_number); 
    getchar(); 
    return 0; 
} 

Jedoch, wenn ich dies ausführen, und versuchen, eine Zahl in die Eingabeaufforderung eingeben, das Befehlsfenster schließt gerade. Jede Hilfe würde sehr geschätzt werden.

+0

C und C++ krank nicht die gleichen – user463035818

+0

sind – user138774

+1

Führen Sie einfach das Programm von einem Terminal des Tag entfernen und Sie brauchen nicht Chaos um mit „ein Fenster offen zu halten“ ... –

Antwort

2

scanf liest die Nummer, aber hinterlässt das Newline-Zeichen, das Sie in den Eingabestrom eingegeben haben.

So getchar holt es sofort statt warten auf zusätzliche Eingabe.

Sie können einen weiteren Anruf zu getchar hinzufügen. Es ist wahrscheinlich die einfachste Lösung für Ihr einfaches Programm.

1

Verwenden Sie eine andere getchar();, um das Newline-Zeichen zu konsumieren, das vom scanf()-Aufruf übrig ist; so dass die zweite getchar(); würde halten die Aufforderung.

getchar(); 
getchar(); 
... 

Normalerweise würden Sie dies nicht benötigen. Aber wenn Sie laufen exe ​​ (in der Regel Windows) und wollen warten am Ende (was hier der Fall zu sein scheint), würde dieser Trick tun.

-3

Das Programm ist in Ordnung, vielleicht ist der Compiler nicht richtig eingerichtet.

+0

Nein, ist es nicht. Das Programm und der Compiler verhalten sich wie definiert. – Gerhardh

Verwandte Themen