求char类型数组的strlen长度
昨天老师给了一道题目
#include <stdio.h>
#include "string.h"
int main()
{
int i;
char a[1000];
for(i = 0; i < 1000; i++)
{
a[i] = - i - 1;
}
printf("strlen(a)=%d\n", strlen(a));
return 0;
}
当时心想这个答案不就是1000吗。我甚至想了1001,因为想到字符串有\0。
但是后来才意识到了这是要求的是strlen。1000的这个数组的sizeof。
sizeof求的是数组的空间容量,而strlen求的是数组的实际长度,有多少数字字符存储在里面。
上面说到\0 因为我现在大二 大一的时候没有好好学c语言,怎么都入不了门 现在再回顾的时候发现一些细节还是处理不好。
首先谈谈\0与strlen的关系。
strlen一遇到\0他就不会再继续下去了,所以他当然是不会去计算\0的个数的。
例 strlen("abcd\0ef\ng\0")
这个答案应该是4,因为他遇到第一个\0就自动停止了。只读了abcd。
再说说\0与sizeof的关系
sizeof是表示数组情况的,而字符数组在初始化的时候是不加’\0’的。所以sizeof不包括’