sizeof()
源代码:
1#include <stdio.h>2int 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>3int 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既可得到字符串的正式长度,又可节省开销。