我正在使用strlen()函数来打印字符串的大小,如下所示。
int main()
{
char c[]={1,2,3,4,5}; //same output if c[5]={1,2,3,4,5}
printf( "Length of string C is %d", strlen(c));
return 0;
}
输出
Length of string C is 19
为什么打印19?
答案 0 :(得分:7)
在C中,字符串是以特殊字符'\0'
(ASCII:0
)终止的字符数组。
char c[]={1,2,3,4,5};
是一个字符数组。
要将其设为字符串,请将最后一个值设为0
,即char c[]={1,2,3,4,5,0};
或更好char c[]={1,2,3,4,5, '\0'};
现在您的strlen
无法正常工作,因为它通过搜索您未在数组中提供的'\0'
终结符找到字符串的结尾。
它继续搜索'\0'
(并导致数组元素的访问超出范围,这是一种未定义的行为,有时非常糟糕)。它在第19个字符处找到它(通过运气),因此返回该结果。