char string1[10];
char string2[10];
strcpy(string1, "hello");
strcat(string2, string1);
if(strcmp(string1, string2)){
printf("Heellloww!!!);
} else {
printf("Bye");
}
当我对if(strcmp(string1, string2))
执行检查时,应该strcmp()
返回什么?它是否总是返回正1才能执行if
中的语句?
答案 0 :(得分:2)
请务必查看手册:
int strcmp(const char *s1, const char *s2);
返回值: 如果找到s1(或其前n个字节),则strcmp()和strncmp()函数返回小于,等于或大于零的整数,小于,匹配或大于s2
在您的情况下,如果strcmp
和string1
相同(或匹配),string2
将返回零。因此,如果 相同,则打印Bye
,如果它们不同,则打印Heellloww
。
答案 1 :(得分:2)
您的代码问题是strcat
:它会导致未定义的行为。
为了使strcat
起作用,传递给它的两个字符串必须以空值终止。但是,您传递的第一个字符串是而不是以null结尾 - 实际上,它是未初始化的。
解决这个问题很简单 - 您可以在声明中将{0}置于string2
的初始位置:
char string2[10] = { 0 };
现在字符串将比较相等,这意味着strcmp
将返回零。如果您希望在两个字符串相同时打印Heellloww
,则需要将== 0
添加到if
语句中。