c - 从 Windows 中的文件或命令进行管道传输/重定向时出错

标签 c redirect piping

我制作了一个程序,然后用它从其输出创建一个文件,现在我想制作几个程序之一来运行重定向该文件(或将其他程序的输出通过管道传输到它)。 我使用以下代码作为第一个程序的测试

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) 停止执行。 我不知道为什么会发生这种情况,我尝试刷新标准输入、标准输出和我想到的所有内容,但没有成功。

我做错了什么或遗漏了什么?

提前致谢。

最佳答案

char str[100];
while (str != NULL)

str 被视为指向数组中第一个字符的指针,因此它的值永远不会改变,这意味着循环永远不会终止。

关于c - 从 Windows 中的文件或命令进行管道传输/重定向时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32421576/

相关文章:

c - 使用静态变量时出错

c++ - 使用 MySQL C API 和 C++ 获取 MySQL 数据库表中的行

c - 帮助解决在命令行中使用 '<' 重定向运算符读取文本文件时出现的一个小问题? C

c - 在 Windows 上将命令通过管道传输到缓冲区

c - 使用 mmap 导致无效参数错误

c - HEX码扫描和处理

php - 重定向到页面并发送自定义 HTTP header

java - 使用SSO时如何处理Http session 超时

c - 为什么重定向(或管道)会改变程序的行为

c++ - 将标准输出重定向到另一个程序的标准输入