2 a18826408828 a18826408828 于 2014.10.21 23:45 提问

关于strlen函数的一个不解
c++

char arr[]={1,2,3,4,5,6,7,8};
cout<<strlen(arr);

为什么以上语句输出的值是19?

3个回答

xuexiacm
xuexiacm   2014.10.24 14:34

两种定义方式:
char arr[9] = {'1', '2', '3', '4', '5', '6', '7', '8'}
char arr[] = {'1', '2', '3', '4', '5', '6', '7', '8', '\0'} //明确以'\0'结尾。
意识没有加单引号,二是没有以'\0'结尾。
具体原因就不太清楚了。

u012892893
u012892893   2014.10.28 20:00

因为strlen()函数是根据'\0'来判断字符数组结束的,也是根据它来计算长度的。若定义时没有“\0”,则会从数组的存储位置开始直到找到一个空字符,并得到所谓的字符串长度

happyparrot
happyparrot   Ds   Rxr 2014.11.05 17:32

应该说你这个代码犯了几个错误。
就这段代码来说,不应该用strlen,应该用sizeof(arr)
如果想用strlen,那么就应该写成char arr[9]={1,2,3,4,5,6,7,8};

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!