Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C:以数组形式请求输入_C - Fatal编程技术网

C:以数组形式请求输入

C:以数组形式请求输入,c,C,我想让用户的输入形成一个整数数组。如果一个输入无效(不是整数),则将打印当前数组,并要求用户继续输入最后一个位置的数字。这是我的代码,但它不起作用。我该怎么办 int A[SIZE], i; for (i=0; i<SIZE; i++) { A[i] = 0; } printf("Enter %d numbers as an array: ", SIZE); i = 0; // Initialize i whi

我想让用户的输入形成一个整数数组。如果一个输入无效(不是整数),则将打印当前数组,并要求用户继续输入最后一个位置的数字。这是我的代码,但它不起作用。我该怎么办

int A[SIZE], i;

    for (i=0; i<SIZE; i++) {
        A[i] = 0;
    }

    printf("Enter %d numbers as an array: ", SIZE);
    i = 0; // Initialize i
    while (i<SIZE) {
        for (i=i; i<SIZE; i++) {
            if (!scanf("%d", &A[i])) {
                printf("Invalid input!\n");
                printarray(A, SIZE);
                printf("i = %d", i);
                break;
            } 
        }
    }
inta[SIZE],i;

对于(i=0;i如果用户输入的不是整数,
scanf
将继续失败,因为输入仍然存在。解决此问题的一种方法是使用
fgets
逐行读取数据,然后使用
sscanf
扫描该行以查找数字。如果输入有效,还应仅增加
i

结合其他评论,您可以得到如下内容:

int i=0;
while(i<SIZE)
{
    char line[100];
    fgets(line, sizeof line, stdin);
    if(sscanf(line, "%d", &A[i]) == 1)
        ++i;
    else
    {
        printf("Invalid input!\n");
        printArray(A, i);
        printf("i = %d", i);
    }
}
inti=0;

while(i“它不工作”)while(i
printary(A,i);
因为数组尚未满。使用
while(scanf(…)!=1){
循环,直到从用户收到正确的输入。一旦
scanf
失败,它将继续失败,直到清除输入缓冲区。还要注意,
if
语句没有处理EOF,EOF是一个非零值。