2016-12-01 6 views
0

meine während cyclus wird nicht funktionieren, wenn ich es mit STRG + Cwährend und EOF wird nicht funktionieren

while(1){ 
    res=scanf("%d",&k); 
    if(res != 1){ 
     printf("Bad input.\n") 
     return 1; 
    } 
    else if((k <= 0)){ 
     printf("Bad input.\n"); 
     return 1; 
    } 
    if(res == EOF){ 
     return 0; 
    } 
    a=one(arr, arr_size, k); 
    b=two(arr, arr_size, k); 
    c=three(arr, arr_size, k); 
    printf("Sum: %d\n",a+b+c); 
} 

schließen möchten Sie zeigt mir nur Bad Eingang, wenn ich es STRG + D schließen möchten. Ich möchte nur Programm mit return 0;

Antwort

0

Der erste Test, den Sie tun, ist auf res schließen, und EOF ist in der Tat nur die Zahl -1, die 1 nicht gleich ist, die erste if verursacht auf true zu lösen und die Rückkehr mit 1 .

sollte diese Arbeit:

while(1) { 
    res=scanf("%d",&k); 

    /* first check for EOF */ 
    if(res == EOF){ 
     return 0; 
    } 
    /* then check input */ 
    if(res != 1 || k <= 0) { 
     printf("Bad input.\n"); 
     return 1; 
    } 
} 
+0

Dank für Hilfe, aber ein anderes Problem ist, wenn ich 3,8 oder einige doppelte Anzahl scanf wird es meine Funktionen ein, zwei, drei und dann wird es wegen der doppelten Anzahl Bad Eingang printf nennen .. Ich möchte schließen, wenn es nicht interger Nummer vor Aufruf der Funktion ist – blackroad

Verwandte Themen