这里有什么问题? blah=="abcdef"
未返回真值
int main(void)
{
char blah[] = "abcdef";
if(blah=="abcdef")
printf("%s\n", blah);
}
答案 0 :(得分:1)
为了比较字符串,您应该使用类似strcmp()
的内容。
==
和!=
比较基址,因此它们实际上并不比较字符串的值。
比较“对象”与“对象的价值”
时要小心答案 1 :(得分:1)
当你将两个字符串与==
进行比较时,你实际上是在检查两个字符串的指针(基地址)的相等性,这显然总是错误的。
比较两个字符串的正确方法是使用strcmp()
中的内置<string.h>
函数或者自己定义字符串相等检查函数,如下所示:
int isEqual(char *a,char *b)
{
int i=0;
while(1)
{
if(a[i]==b[i])
{
if(a[i]=='\0')
return 1;
i++;
continue;
}
else
return 0;
}
}
答案 2 :(得分:0)
您正在将string
字面值与character array
进行比较。试试以下。
使用strcmp()
比较字符串的内容。
或强>
char buffer[5];
char word[5] = "WORD";
test(buffer, word, 5);
short test(char buffer[], int length) {
int i;
char word[5] = "WORD";
for(i = 0; i < length; i++) {
if(buffer[i] != word[i]) {
return 0;
}
}
return 1;
}
答案 3 :(得分:0)
我建议使用strcmp()
strcmp(blah, "abcdef");
这样可以比较两个字符串。
答案 4 :(得分:0)
您应该使用strcmp()
函数来比较字符串。
blah=="abcdef"
总是返回false,因为你比较了2个内存地址。
int main(void)
{
char blah[] = "abcdef";
if(strcmp(blah,"abcdef") == 0 ) //return 0 if equal, !=0 if not equal
printf("%s\n", blah);
}