C中的指针为什么功能不起作用?

Pointers in C. Why the function isn′t working?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Why does strcmp() return 0 when its inputs are equal?
strcmp results in false when strings are equal

我真的不明白为什么函数检查返回真的!!!!我使用strcmp比较char[]指针(hello)和chars"bar"的数组。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
bool check(const char* word);
char pointer[] ="hello";  

int main (void)
{
    bool answer = check(pointer) ;

    if(answer == true)
        printf("true");
    else
        printf("false");

    return 0;
}

bool check(const char* word)
{
    printf(" word = %s", word);

    if(strcmp( word ,"bar"))
        return true;
    else
        return false;
}


I really can′t get why the function check return true!!! </P >

interestingly在原基本的C代码有没有"真"或"假"(或"布尔")和收购,包括一些额外的header files(状stdbool.h)…………………但我digress………………… </P >

这不是真正的回归。读手册strcmp()。。。。。。。你能做什么用man 3 strcmpLinux或是谷歌搜索"strcmp侠"。 </P >

手册将告诉你的返回值的函数是: </P >

... an integer less than, equal to, or greater than zero if s1 (or the first n bytes thereof) is found, respectively, to be less than, to match, or be greater than s2.

保持在心中那全是整数的值是不会被视为是"真实"的方法,有条件的检查。所以这是"说在这个代码: </P >

1
if(strcmp(word,"bar"))

任何字的这是不是"酒吧"将是"真实的"。什么是你想要的,一个是火柴,如果它是相等的到零: </P >

1
if(strcmp(word,"bar") == 0)

债券的说明,如果你是要去declare就在全球范围的像你做的… </P >

1
char pointer[] ="hello";

这不是需要的通它的函数,你可以访问它的全球,这是一个全球的熔点。是全局变量,但是,在generally frowned河畔。 </P >


如果0strcmp时返回的字符串是平等的。 </P >

你的条件应该是:negated </P >

1
2
if(!strcmp( word ,"bar"))
    return true;

对或相对于0: </P >

1
2
if(strcmp( word ,"bar") == 0)
    return true;