fgets在无限循环中终止

时间:2019-10-02 23:53:10

标签: c fgets

我正在尝试在无限循环中使用fget,因为我需要用户的特定输入。我要连续打印一些东西,直到收到用户的任何输入为止。但是fgets似乎使程序等待输入。

我尝试使用其他输入方法,例如gets。

while(1){
        char input[100];
        fgets(input, sizeof(input),stdin);
        printf("I want this statement to continuously print.");
}

该语句仅在我输入文本时打印。但是我希望它不考虑输入内容而连续打印该语句。

1 个答案:

答案 0 :(得分:1)

C标准库中的所有I / O都是 blocking I / O。这意味着,如果您从文件(或stdin等)中读取或写入文件,则只有在发生读取或写入(或遇到错误)后,读取或写入功能才会返回。

如果要在执行I / O操作时执行代码,则需要(1)使用多个线程,或者(2)使用低级非阻塞I / O(例如Posix read /使用O_NONBLOCK写入文件)。使用stdin时,这可能还涉及对终端设置的一些低级混乱。