2016-12-22 2 views
0

Wie kann ich brechen von meinem while-Anweisung, wenn ich scanf Nummern wie 1 2 3 4 5 und dann drücken Sie Enter und geht weiter mit meinem Code ... hier ist, was ich getan habe, aber nichts funktioniertPause von während Anweisung

while(1){ 
    res=scanf("%d",&x); 
     arr[i++]=x; 
     counter++; 
      if (res == 0){ 
       printf("EOF\n"); 
       break; 
      } 
      if (res != 1) 
      { 
       printf("Nespravny vstup.\n"); 
       return 1; 
      } 
      if (counter > 100) 
      { 
       printf("Nespravny vstup.\n"); 
       return 1; 
      } 
    } 
printf("Counter:%d\n", counter); 

Antwort

1

Nach der man Seite von scanf:

NAME 
    scanf, fscanf, sscanf, vscanf, vsscanf, vfscanf 
... 

RETURN VALUE 
    These functions return the number of input items successfully matched 
    and assigned, which can be fewer than provided for, or even zero in the 
    event of an early matching failure. 

    The value EOF is returned if the end of input is reached before either 
    the first successful conversion or a matching failure occurs. EOF is 
    also returned if a read error occurs, in which case the error indicator 
    for the stream (see ferror(3)) is set, and errno is set indicate the 
    error. 

In Ihrem Fall wird scanf 0 zurück nur im Falle eines frühen Anpassungsausfall.

+0

Ja, aber wie es geht, wenn der Benutzer 1 2 3 und Eingabe und weiter im Code? – blackroad

+0

Um zu brechen, geben Sie entweder nicht-numerische Zeichen (wie 'abcd') & Enter oder nur' Strg + D' ein –

1

Rückkehr bricht die ganze Funktion ab, versuchen Bruch; anstelle von Rückkehr.

Verwandte Themen