所以我们正在学习scanf和输入重定向。我必须从标准输入读取数据并将其存储在预定大小的数组中。之后,我们必须要求用户输入一个整数x,然后在数组中进行一些基本搜索。命令行中的用户必须使用“./a.out < somefile.txt”来提供数据。我正在通过scanf读取这些数据,并使用了一个while循环,当scanf读取EOF时终止。问题是,当我想重新使用scanf来要求用户输入整数x来在数组中搜索时。 scanf总是返回-1并将0存储在x中,所以我似乎无法使用scanf。我对scanf的活动感到困惑。下面我提供了我的程序的简单代码和一个示例.txt文件。用户在命令行通过重定向进入在使用scanf读取数据时重定向输入问题
的data.txt文件“<”
1
2
3
4
5
6
现在我的示例程序
int main(){
int arr[6], i = 0, value, x;
while(scanf("%d",&value) != EOF){
arr[i] = value;
i++;
}
printf("Enter integer to search for: ");
scanf("%i", &x);
printf("You entered %i", x);
return 0;
}
现在,这是输出,它只是运行,不等待供用户输入数据
Enter integer to search for:
You entered 0
无法重现它。 – haccks
@haccks:你可能需要在你的data.txt结尾处有一个换行符。 – nmichaels