在下面的代码中,我原本期望会出现一些奇怪的行为(比如无限循环),因为我没有提供以null结尾的字符串作为strcmp()函数的输入。
输出结果如下:
#include <stdio.h>
int main()
{
char string1[20];
char string2[20] = {'H','e','l','l','o',};
strcpy(string1, "Hello");
// strcpy(string2, "Hellooo");
printf("Return Value is : %d\n", strcmp( string1, string2));
return 0;
}
输出结果如下:
Return Value is : 0
为什么它显示两个字符串相等?
我猜测当我初始化数组(string2)时,其余的元素被填充为零。但由于该数组是局部的,这不应该是这种情况。
char temp[100] = {0}
。在这里,你只是提供了数组的第一个成员,但是如果你看一下temp
的内存布局,你会发现整个数组已经填充了零。 - Abhineet