关于C字符串的基础知识

时间:2015-12-29 12:47:20

标签: c arrays

这里有什么问题? blah=="abcdef"未返回真值

int main(void)
{
  char blah[] = "abcdef";
  if(blah=="abcdef")    
     printf("%s\n", blah);
}

5 个答案:

答案 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);
}