(C语言)为什么这里的strlen等于25?

问题描述 投票:0回答:1

这样我就可以确认我认为正在发生的事情是否真的发生。当我将(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?

c printf c-strings fgets strlen
1个回答
0
投票

如果整行适合缓冲区,根据您的大小参数(在您的情况下是

26
),其中包括字符串空终止符,那么
fgets
将添加换行符。

如果整行适合缓冲区,那么

fgets
将不会添加换行符,只会添加适合缓冲区的内容(包括空终止符)。

因此,如果您输入超过

25
个字符(不包括换行符),那么长度将始终为
25

© www.soinside.com 2019 - 2024. All rights reserved.