来自 windows 中的文件或命令的错误 piping/redirecting
Error piping/redirecting from a file or command in windows
我制作了一个程序,然后我用它来从它的输出创建一个文件,现在我想制作几个程序之一来 运行 重定向该文件(或将其他程序的输出传递给它).
我用下面的代码作为第一个程序的测试
int main (int argc, char* argv[])
{
long long int n = 0;
char str[100];
while (str != NULL)
{
fscanf(stdin,"%s[=12=]", str);
printf("%lld\t%s\n", n, str);
n++;
}
return 0;
}
程序正确执行到重定向文件或管道输出的最后一行,然后无限重复直到我用 ctrl-c (Windows) 停止执行。
我不知道为什么会这样,我尝试刷新 stdin、stdout 和我想到的所有内容,但没有成功。
我做错了什么或遗漏了什么?
提前致谢。
char str[100];
while (str != NULL)
str
被视为指向数组中第一个字符的指针,因此它的值永远不会改变,这意味着循环永远不会终止。
while (str != NULL)
{
fscanf(stdin,"%s[=10=]", str);
printf("%lld\t%s\n", n, str);
n++;
}
替换为
while (scanf("%s", str) != EOF)
{
printf("%lld\t%s\n", n, str);
n++;
}
问题解决了。
我制作了一个程序,然后我用它来从它的输出创建一个文件,现在我想制作几个程序之一来 运行 重定向该文件(或将其他程序的输出传递给它). 我用下面的代码作为第一个程序的测试
int main (int argc, char* argv[])
{
long long int n = 0;
char str[100];
while (str != NULL)
{
fscanf(stdin,"%s[=12=]", str);
printf("%lld\t%s\n", n, str);
n++;
}
return 0;
}
程序正确执行到重定向文件或管道输出的最后一行,然后无限重复直到我用 ctrl-c (Windows) 停止执行。 我不知道为什么会这样,我尝试刷新 stdin、stdout 和我想到的所有内容,但没有成功。
我做错了什么或遗漏了什么?
提前致谢。
char str[100];
while (str != NULL)
str
被视为指向数组中第一个字符的指针,因此它的值永远不会改变,这意味着循环永远不会终止。
while (str != NULL)
{
fscanf(stdin,"%s[=10=]", str);
printf("%lld\t%s\n", n, str);
n++;
}
替换为
while (scanf("%s", str) != EOF)
{
printf("%lld\t%s\n", n, str);
n++;
}
问题解决了。