fgets()函数在打印字符串时自动断行

Gui*_*rdt 3 c line-breaks fgets

#include <stdio.h>

void main () {
    char str[5];
    fgets(str, sizeof(str), stdin);
    printf("%s.", str);
}
Run Code Online (Sandbox Code Playgroud)

我用C编写了这个简单的代码,我试图在一行中打印一个字符串和一个点,但每当我输入一个包含3个或更少字符的字符串时,输出在字符串后面都有一个换行符.

输入:

abc
Run Code Online (Sandbox Code Playgroud)

输出:

abc
.
Run Code Online (Sandbox Code Playgroud)

如果我输入正好4个字符的内容,输出就是我想要的,没有换行符.

我已经尝试使用gets()和scanf()函数,但它们运行良好,但我无法使用它们.

有人知道它为什么会发生和解决方案吗?

das*_*ght 6

对此问题的解释在以下文档中fgets:

如果发生文件结束或找到换行符,则解析将停止,在这种情况下str将包含该换行符.

这正是你的情况下发生的事情:str包含"abc"后面跟着的输入字符串'\n',它在"abc"和之间打印'.'.