通常 gets() 将输入作为 \n ,它位于它上面的 printf() 的末尾

generally gets() takes the input as \n which is at the end of printf() above it

为什么 gets() 在这里要求字符串。我的意思是,为什么它不使用前一个 printf() 中的换行符而程序就终止了? 是的,我知道我应该使用 fgets() 之类的东西。请不要提及它。

参考代码-

#include <stdio.h>

main()
{
    char str[30];
    printf("\n");
    gets(str);
    puts(str);
}

printf("\n"); 将输出打印到 stdoutgets(str)stdin 读取输入。

进一步参考 gets and printf

进一步参考 stdin vs stdout

来自char *gets(char *str)的手册:

Reads a line from stdin and stores it into the string pointed to by, str. It stops when either the newline character is read or when the end-of-file is reached, whichever comes first.

来自 printf 手册:

The functions printf() and vprintf() write output to stdout, the standard output stream;

如手册所述,getsstdin 中读取一行。

函数 printf 写入 stdout

因此 gets 不会阅读 printf 正在写的内容。