如何让数组知道是否有非数字输入或它到达输入的末尾?

时间:2016-04-22 10:42:11

标签: c arrays average alphabet

我制作了一个数组程序,它读入10个数字并找到这些数字的最小值,最大值和平均值。

现在,我希望程序打印出来"没有足够的数字"当它遇到非数字输入或它到达输入的结尾时。例如3 65 2 4你好 - > "没有足够的数字"

到目前为止,这是我的代码:

protected $except = [

    ];

}

3 个答案:

答案 0 :(得分:1)

scanf返回成功解析的令牌数。

以下是如何检查输入是否成功的示例:

// inputting the numbers into an array
for(i = 0; i < LENGTH; i++) {
    if (1 != scanf("%d", &array [i])) {
        printf("Not enough values!\n");
        exit(1);
    }
}

答案 1 :(得分:1)

您可以使用fgetsstrtol

char str[32];
char *ptr;

for (i = 0; i < LENGTH;) {
    if (fgets(str, sizeof str, stdin)) {
        array[i] = (int)strtol(str, &ptr, 10);
        if (ptr != str && *ptr == '\n') {
            i++;
        } else {
            printf("Enter a valid number\n");
        }
    }
}

答案 2 :(得分:0)

这是一个简单的解决方案,在for循环中

  while (i!=LENGTH){

puts("There's no enough numbers");

}

这可以发现数组的结尾

要发现是否存在非数值,我必须使用内置函数,例如IsDigit,这是一个测试是否有数字的函数。