首页 > 解决方案 > 如何在C中读取标准输入然后键盘输入?

问题描述

我正在尝试读取重定向/通过管道传输到我的程序的内容(例如 program < test.txt),然后显示命令提示符并读取键盘输入。

管道输入正确打印,然后在标准输入中引发 EOF。在那之后,我似乎无法获得键盘输入。例如,下面的代码无限循环:它打印的字符是-1(EOF)。

你会建议什么让键盘输入正常工作?

#include <stdio.h>
#include <unistd.h>

int main()
{
    int ch;

    while (EOF != (ch = getchar())) {
        printf("%c", ch);
    }

    sleep(3);

    while (1) {
        while ('\n' != (ch = getchar())) {
            printf("%c", ch);
        }
    }

    return 0;
}

标签: ckeyboardstdineofgetchar

解决方案


推荐阅读