我试图使用strcmp()比较两个字符串,如果它们等于函数返回-1(意味着它们不相等),我不知道什么是错的。
int main()
{
char password[]={'6','6','6','6','6','6'};
char passmatch[6];
int i =0;
for(i ; i<6 ; i++)
{
passmatch[i]='6';
}
printf("\n");
if(strcmp(password,passmatch)==0)
{
printf("Strings are equal");
}
else
{
printf("String are'nt equal");
}
return 0;
}
答案 0 :(得分:6)
在C中,字符串需要以空值终止才能与标准库一起使用。尝试在末尾添加'\ 0',或以“正常”方式创建字符串文字,例如char password[] = "666666";
,然后语言会自动将\0
放在最后。
答案 1 :(得分:1)
问题在于C '6'
(带引号)与6
(不带引号)不同。这就是为什么这个循环
for(i ; i<6 ; i++) {
passmatch[i]=6; // <<== Should be '6', not 6
}
未分配您要分配的内容。如果你在6
附近加上引号,你会得到正确的内容,但你的程序仍然会被破坏,因为strcmp
需要空终止。
您可以通过两种方式解决问题:
memcmp
,这需要长度,因此不需要空终止。