2016-10-13 2 views
0

Beim Testen eines Programms (in C) um Fehler zu vermeiden, klickte ich versehentlich auf \, als das Programm nach einer Ganzzahl verlangte. Die while-Schleife beginnt dann zu versagen. Ein Beispiel:Das Eingeben einer unerwarteten Eingabe führt dazu, dass die Schleife fehlschlägt (C)

int a; 
while(1){ 
    scanf("%d",&a);printf("%d\n",a); 
    a--; 
    if(a==0){break;} 
} 

Immer, wenn ich eine Zahl eingeben, soll sie die gleiche Anzahl drucken. Aber wenn ich ein Zeichen eintippe, wird es alle Zahlen unterhalb der vorherigen Eingabe ausdrucken und beginnt dann, alle Zahlen darunter bis 1 zu drucken. Kann jemand einen Anhaltspunkt geben, dieses Problem zu beheben? Danke vielmals.

Edit: Dieses Programm ist nur ein Beispiel für den Fehler, das eigentliche Programm ist viel größer als das.

+2

Ich würde vorschlagen, dass Sie nicht scanf verwenden. Überprüfen Sie mindestens seinen Rückgabewert. –

+0

Was ist die Absicht Ihres Programms? Soll man die Werte unterhalb der angegebenen Zahl drucken, bis man 0 erreicht? – user5478656

+0

@ user5478656 Dieses Programm druckt nur aus, was Sie eingegeben haben, bis Sie 0 eingeben. –

Antwort

0

Sie benötigen keine While-Schleife, um nur die von Ihnen eingegebene Nummer zu drucken. Dies wäre genug:

int a; 
    scanf("%d",&a); 
    printf("%d\n",a); 

Oder wenn Sie von der Eingabenummer, bis man drucken möchten:

int a; 
while(1){ 
    scanf("%d",&a); 
    printf("%d\n",a); 
    a--; 
    if(a<=0){break;} 
} 

Verwenden a<=0 zu vergleichen, da sie nicht in eine Endlosschleife erzeugen würde, selbst wenn Sie eine falsche eingegeben Eingang.

0

In diesem Fall brauchen Sie kein--.

int a; 
while(1){ 
    scanf("%d",&a); 
    printf("%d\n",a); 
    if(a==0) 
     break; 
} 
Verwandte Themen