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

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

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

原文地址:https://www.cnblogs.com/yuphone/p/1617757.html