我创建了一个函数,该函数应该从文件读取一些整数到数组。该函数还应该捕获整数不足以填充数组并终止的情况(即填充数组时达到EOF)。
我的问题:scanf
重用了已经扫描的值,该函数似乎无法解决问题。因此,例如,大小为4的数组的输入12 22
将以12 22 22 22
的形式填充数组。
int fillArray(int* array, int size) {
int temp = 0, i;
for (i = 0; i<size; ++i) {
if(!scanf("%d", &temp) || !(temp > 0)) {
if(feof(stdin)) {
printf("Error: not enough numbers"); /* Should be EOF */
return 1;
}
printf("Error: positive numbers only");
return 1;
} else {
heapArray[i] = temp;
}
}
return 0;
}
我希望在第二次迭代后,scanf
应该在转换失败后返回0
,并进入较大的if
块。此时feof(stdin)
为true,终止函数并显示错误消息。
但是,看来scanf
的转换失败并未发生。