动态加载输入

时间:2013-11-09 18:01:16

标签: c scanf

我是c编程的新手,我需要在循环中扫描输入并在扫描时验证它们。 我尝试实现这样的目标:

在从0到n的循环中,对于每个n类型4输入,然后按回车验证它们(如果它们错误然后结束程序)然后继续键入另外4个输入(新行)......

基本输入是:

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;
}

按下回车后,此程序结束。

感谢任何人的帮助。

1 个答案:

答案 0 :(得分:0)

您需要为循环使用另一个计数器,因为i用于数组的索引。

如果n是您想要输入4个输入的次数,那么必须相应地分配数组(以5的倍数表示)。如果您的计数器以<开头,您也应该使用小于n 0且不等于相等的数量。

此处变量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;  
}