c - 使用 "while"检查是否有空行C

标签 c while-loop gets puts

该代码是检查是否有空行。我想当我输入一些文本时,它会继续执行 printf(),因为它卡在循环中。但事实上,它只执行一次 printf(),然后等待另一行文本。为什么?是因为在 gets() 函数之后输入将被删除吗?

这是代码

int main(){
    char input[257];
    char *ptr;

    puts("Enter text a line at a time, then press Enter");
    puts("Enter a blank line when done");

    while( *(ptr= gets(input)) != NULL){
        printf("You've entered: %s\n", input);
    }
    puts("Thank you and goodbye\n");

    return 0;
}

最佳答案

此时应该可以解决问题

while( (ptr= gets(input)) != NULL && input[0]!='\0')

关于c - 使用 "while"检查是否有空行C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34016200/

相关文章:

c - 变量被重置。不知道为什么

python - 在列表中生成字符串元素的组合,将它们限制为特定的字符数量

java - While 循环因用户名/密码不匹配而退出

c - fgets 而不是 gets

c - 我应该使用什么而不是获取?

c - 如何通过 execvp 将 gdb 调试到子进程中启动的进程?

c++ - 在 C C++ 中比较和匹配 word/excel 文件中的数字

c - 以下一段 C 代码的作用是什么

loops - 如何在 Common Lisp 循环中正确编写此条件?

c - Gets/fgets跳过C中的输入步骤