我尝试创建一个大小为i + 1的临时数,但我发现无论i或size的值是多少,我的代码总是会创建一个大小为6的字符串。这怎么可能发生?
LOCALE_ID
答案 0 :(得分:1)
strlen
检查\0
的第一次出现。当您使用未初始化的数组调用strlen
时,就像在此处一样:
char temp[size];
printf("The value of i is : %d\n", i);
printf("The value of size is : %d\n", size);
printf("The copy has the size of: %d\n", strlen(temp));
数组的内容是随机的,并且您的程序具有未定义的行为,因为您不允许使用未初始化的变量。
答案 1 :(得分:0)
strlen()
只计算从参数指针开始的非零字节。您似乎无法将temp
阵列归零。