今天在计算字符串的长度的时候,发现strlen()一直不能显示数组的长度。我很奇怪,代码如下:
#include <stdio.h>
#include <string.h>
int main (void)
{
char array[3] = "123";
char *arr = "123";
printf("array size is %d\n\r",strlen(array);
printf("string size is %d\n\r",strlen(arr));
return 0;
}
array size is 7
string size is 3
总是输出7或者别的。
困惑了很久。
最后老大指点了一下。
真是有点惭愧。说真的。自己写程序还是嫩了点啊。
有很多的基本的东西没有理解透彻。
其实这个问题的关键是字符数组的结束符上。
数组的结束符需要我们留出一个字节。而字符串是自动添加的。正确的代码应该是下面的样子:
#include <stdio.h>
#include <string.h>
int main (void)
{
char array[4] = "123";/* 数组的下标需要给字符串留一个结束符的空间"123\0"*/
char *arr = "123";
printf("array size is %d\n\r",strlen(array);
printf("string size is %d\n\r",strlen(arr));
return 0;
}
array size is 3
string size is 3
文章评论(0条评论)
登录后参与讨论