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

时间:2015-10-19 06:15:12

标签: c newline fgets gets

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

参考代码 -

#include <stdio.h>

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

2 个答案:

答案 0 :(得分:3)

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

  

从stdin读取一行并将其存储到指向的字符串中,   海峡。当读取换行符或者换行符时,它会停止   达到文件结尾,以先到者为准。

来自printf的手册:

  

函数printf()和vprintf()将输出写入stdout,即   标准输出流;

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

函数printf写入stdout

因此,gets无法阅读printf正在撰写的内容。

答案 1 :(得分:1)

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

进一步参考getsprintf

进一步参考stdin vs stdout