【发布时间】:2015-09-06 08:30:17
【问题描述】:
我制作了一个程序,然后用它从其输出创建一个文件,现在我想制作几个程序之一来运行重定向该文件(或将其他程序的输出传送到它)。 我用下面的代码作为第一个程序的测试
int main (int argc, char* argv[])
{
long long int n = 0;
char str[100];
while (str != NULL)
{
fscanf(stdin,"%s\0", str);
printf("%lld\t%s\n", n, str);
n++;
}
return 0;
}
程序正确执行,直到重定向文件或管道输出的最后一行,然后无限重复,直到我用 ctrl-c (Windows) 停止执行。 我不知道为什么会发生这种情况,我尝试刷新标准输入、标准输出和我想到的所有内容,但没有运气。
我做错了什么或错过了什么?
提前致谢。
【问题讨论】:
-
str != NULL永远不会是假的。查看 scanf 文档,了解它在出现错误/流结束情况时的作用。