原创 结束符引发的困惑(copyright 2007 by Alexander Lee)

2007-11-26 21:12 2828 4 4 分类: MCU/ 嵌入式
今天在计算字符串的长度的时候,发现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条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /2 下一条