2013-11-09 46 views
0

我是c編程新手,我需要在週期中掃描輸入並在掃描它們時驗證它們。 我試圖做到這樣:動態加載輸入

在從0到n的循環中,對於每個n型4個輸入,然後按Enter確認它們(如果它們錯了,則結束程序),然後繼續輸入另外4個輸入(新線)...

Basicly輸入是這樣的:

1 2 3 4(輸入)(如果正常 - >光標下一行)

7 5 6 8(輸入)....

一直到n。

int i=0; 
while (i <= n){ 
    if(scanf("%d %d %d %d",&array[i],&array[i+1],&array[i+2],&array[i+4])!=4) return 0; 
    i+=5; 
} 

這個程序後,我按enter鍵結束。

感謝任何人的幫助。

+2

n的值是多少?你輸入4值?如果你的n小於5,那麼程序將在第一次輸入後結束。爲什麼你最後一個參數是'&array [i + 4]'而不是'&array [i + 3]'? – A4L

+0

n應該總是高於5,我輸入4的值,i + 4是因爲我需要這個自由索引以供將來使用 –

回答

0

因爲i用於數組的索引,所以您需要爲循環使用另一個計數器。

如果n是您想要輸入4個輸入的次數,那麼必須相應地分配數組(5的倍數)。如果您的計數器以0開頭,您也應該使用小於等於n <

這裏變量c用於while條件。

#include<stdio.h> 
#include<stdlib.h> 

int main(int argc, char** argv) 
{ 
    int n = 5; 
    int array[n*5]; // mult 5 because of i+=5/4 inputs at onece + 1 rserved 
    int i=0; 
    int r = 0, c = 0; 
    while (c < n){ 
     printf("type four ints: "); 
     r = scanf("%d %d %d %d",&array[i],&array[i+1],&array[i+2],&array[i+4]); 
     if(4 != r) { 
      printf("bad input, program will exit: %d\n", r); 
      return EXIT_FAILURE; 
     } 
     i+=5; 
     c++; 
    } 
    return EXIT_SUCCESS; 
} 
+0

最後一個參數似乎是'&array [i + 3]'。 –

+0

@SunEric,已經問過在評論問題時,「i + 3」保留「供將來使用」! – A4L