提问人:P.Diddy 提问时间:4/25/2019 最后编辑:P.Diddy 更新时间:4/25/2019 访问量:39
使用 scanf 未检测到 EOF
EOF not detected using scanf
问:
我创建了一个函数,它应该将一些整数从文件读取到数组中。该函数还应该捕获没有足够的整数来填充数组的情况,并终止(即在填充数组时达到的 EOF)。
我的问题:该函数似乎没有抓住 eof 大小写,重用已经扫描的值。因此,例如,大小为 4 的数组的输入将数组填充为 。scanf
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;
}
我预计在第二次迭代后,应该在转换失败后返回,进入更大的块。此时应为 true,终止函数并打印错误消息。scanf
0
if
feof(stdin)
但是,似乎没有发生转换失败。scanf
答: 暂无答案
评论
!EOF
fscanf
的手册页。 绝对行不通。fscanf
if(feof(stdin))