sizeof()
源代码:
#include <stdio.h>
int main(void)
{
char msg[] = "Hello Nios!";
printf("sizeof(msg) = %ld", sizeof(msg));
return 0;
}
运行结果:
sizeof(msg) = 12
strlen()
源代码:
#include <stdio.h>
#include <string.h>
int main(void)
{
char msg[] = "Hello Nios!";
printf("strlen(msg) = %ld", strlen(msg));
return 0;
}
运行结果:
strlen(msg) = 11
结论
1. strlen(msg)是字符串msg的真实长度,而sizeof(msg)是字符串msg的存储长度。存储长度比真实长度大1,多一个结束符。
2. strlen()需要string.h支持,但sizeof()不需要string.h支持。
因此使用sizeof()-1既可得到字符串的正式长度,又可节省开销。
参考
1. Stephen Prata, C Primer Plus, Fifth Edition, 200411, Sams
2. WinIDE库函数使用手册
本文介绍了C语言中strlen()与sizeof()函数的区别。strlen()用于获取字符串的实际长度,不包括结束符;而sizeof()则返回字符串的存储长度,包括结束符。文章通过示例代码展示了两者的不同,并给出了一种简便的方法来获得字符串的实际长度。
377

被折叠的 条评论
为什么被折叠?



