这样我就可以确认我认为正在发生的事情是否真的发生。当我将(26 个字母)字母表作为输入时,以下代码会打印出 25,是因为 fgets 总是自动将 n 个元素的数组中的第 n 个元素设置为 ' '?
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[26];
printf("String: ");
fgets(str, 26, stdin);
printf("%lu\n", strlen(str));
}
这样,当我尝试打印字母表的 strlen 时,它会在 ' 之前停止 ' 并返回我 25?
如果整行适合缓冲区,根据您的大小参数(在您的情况下是
26
),其中包括字符串空终止符,那么fgets
将添加换行符。
如果整行不适合缓冲区,那么
fgets
将不会添加换行符,只会添加适合缓冲区的内容(包括空终止符)。
因此,如果您输入超过
25
个字符(不包括换行符),那么长度将始终为 25
。