c - while循环要求输入直到使用C的ctrl-d

标签 c

我想创建一个 while 循环,不断要求用户输入,直到用户 ctrl-d 退出。我怎样才能正确地做到这一点?我现在正在使用这个:

 while (1)
    {
        printf("Enter host name: ");
        fgets(user_input, 1000, stdin);
    }

这有效,但用户必须按 ctrl-c 才能结束程序。我想不断询问用户输入,直到他/她点击 ctrl-d。我怎样才能做到这一点?

最佳答案

您必须测试 EOF,这是 CTRL-D 返回的内容。

所以这样做:

while ( fgets( ... ) != NULL ) {
    ...
}

编辑:

既然你在提示,那就更好了:

for ( ;; ) {
    printf( "enter input: " );
    fflush( NULL );   // make sure prompt is actually displayed, credit Basile Starynkevitch
    if ( fgets( input, ... ) == NULL ) break;

    // handle input here
}

关于c - while循环要求输入直到使用C的ctrl-d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25770335/

相关文章:

c++ - VS : How to configure DebugWithReleaseCRT?

c - 非socket上的socket操作,C语言的Client服务器程序

c - 文件名包含空格无法用 fopen 打开

c - C、Python 和 JavaScript 中阶乘计算的不同结果

c - 在 C 程序中的函数中传递二维数组

c - 在 C 循环中使用 asprintf 时发生内存泄漏

c - "= "而不是 "== "在 c if 语句中意味着什么?

c - 如何在没有空终止符的情况下初始化 char 数组?

c++ - 需要作为一元 ‘&’ 操作数的 c 左值中的打印错误

c - 我如何在不使用指针的情况下传递数组函数