fc men队长李起光:大家看一下(CY语言)

来源:百度文库 编辑:神马品牌网 时间:2024/05/07 16:50:07
#include<stdio.h>
#include<string.h>
void main()
{char a[5]={"hLjfg"};
int b;
b=strlen(a);
printf(" %d",b);
}
明明得5的,怎么编译运行得11呢?
改成{“hLjf”}得4,是正常的。为什么?

是的。用字符数组存入字符串时,要多留一个给空字符‘\0’.
很明显,你定义的字符数组容量为5,但却最终放入了6个值:
‘h’、‘L’、‘j’‘f’、‘\0’当然会出错的。
但是不同的编绎器对于出错的处理也不相同,例如在VC编绎器下,会提示出错,主动要求你修改的。致于你的那个11的得来,就要看你用的编绎器使用的策略了。。。
-----------------------------------------------------------
其实,如果楼主想要在C/C++中使用字符串,最常用的方法是:
char * str = "abcdefg";
或者 char str[] = "abcdefg";
编绎器会自动为实际存入的字符串维护长度的!

字符串用数组的话,必须要多定义一个存放'\0'的
比如
char a[6]={"hLjfg"};
否则,会出错,vc++编译就不能通过

楼上说的对!
必须多定义一个存放’\0’的
你如果添上一个’\0’就好使了
在 int b; 下面加上一行 a[5]='\0' 就对了
你可以去试一下了