我正在使用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;
}
Run Code Online (Sandbox Code Playgroud)
产量
Length of string C is 19
为什么打印19?
在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个字符处找到它(通过运气)因此返回该结果.
| 归档时间: |
|
| 查看次数: |
769 次 |
| 最近记录: |