日志档案

发表于 2007-11-26 21:12:39

0

标签: 无标签

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

今天在计算字符串的长度的时候,发现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

系统分类: 嵌入式   |   用户分类: software   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(368)    回复(0)  

投一票您将和博主都有获奖机会!