我有一个问题。我尝试使用fgets函数后查看一些字符串的长度。如果我输入的字符串长度小于可以包含在字符串中的字母数(例如:字符串中的最大字母数为9,我输入4个字母),则会得到字符串长度+1的结果。为什么?
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char name[10]={0};
printf("enter your name\n");
fgets(name, 10, stdin);
printf("your name is %s and it is %d letters\n", name, strlen(name)); // length problem
return 0;
}
fgets
的 man-page 有什么不清楚的地方吗?你在调试器中检查了函数后的数组吗?你发现字符串末尾有什么东西? - too honest for this sitefgets()
包括输入中的换行符 — 如果它读取了换行符。 - Jonathan Lefflerstrlen
返回size_t
,因此请使用%zu
作为格式说明符。 - LPs\n
。 - alk