在下面的代码中,我期待一些奇怪的行为(如无限循环),因为我没有提供空终止字符串作为 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)rest 元素时填充为零。但由于数组是本地的,这不应该是这种情况。
最佳答案
如果数组或结构的初始值设定项仅提供数组或结构的部分数据,则数组或结构的其余部分将设置为 0
。 string2
就是这种情况。
关于c - 为什么 strcmp() 返回 '0' 虽然我没有提供空终止字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24155830/