我想创建一个while循环,不断询问用户输入,直到用户ctrl-d出来。我该怎么做才能正确?我现在正在使用它:
while (1)
{
printf("Enter host name: ");
fgets(user_input, 1000, stdin);
}
这是有效的,除了用户必须按ctrl-c结束程序。我想要不断询问用户他的输入,直到他/她点击ctrl-d。我怎么能这样做?
答案 0 :(得分:1)
您必须测试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
}
答案 1 :(得分:0)
ctrl-d将发送EOF
(文件结尾)字符,该字符将fgets
转换为NULL指针:
while (fgets(user_input, 1000, stdin) != NULL) {
// do stuff...
}
// no more user input