scanf()相关问题
#include <stdio.h>
int main() {
int a = 0;
int arr[6] = {0};
int i = 0;
while(scanf("%d", &a)){
arr[i]= a;
i++;
}
int* ptr = arr;
i=0;
while(i<6){
printf("%d ", *(ptr+i));
i++;
}
return 0;
}
在OJ中运行这个没有输出。运行发现一直在等待输入。可是六个数输入完之后就没了吗?原来是因为scanf()是一个阻塞函数,他可不知道有没有结束,就一直等待着后面的数据。而OJ中的输入其实是文件重定向,文件是有明确的EOF的,所以可以修改判断条件为不等于EOF。

浙公网安备 33010602011771号