安德鲁

[笔记].sizeof()和strlen()的区别.[C]

0
阅读(3752)

sizeof()

源代码:

 
1 #include <stdio.h>
2 int main(void)
3 {
4   char msg[] = "Hello Nios!";  
5   printf("sizeof(msg) = %ld", sizeof(msg));  
6   return 0;  
7 }

运行结果:

sizeof(msg) = 12

 

strlen()

源代码:

 
1 #include <stdio.h>
2 #include <string.h>
3 int main(void)
4 {
5   char msg[] = "Hello Nios!";  
6   printf("strlen(msg) = %ld", strlen(msg));  
7   return 0;  
8 }

运行结果:

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库函数使用手册

http://www.ggv.com.cn/forum/clib/clib.html