为什么这两个字符串在c中不相等

why are these two strings not equal in c

大家好,我写了这段代码,它会检查 get 请求是否正确,但在最后一次比较时,它没有给我预期的结果,谢谢你,问题出在最后一个 if 语句中 return false 应该 return true

#include <stdio.h>
#include <string.h>

int main()
{
    char* string="GET /cats.html HTTP/1.1\r\n";
    if(strncmp(string,"GET ",4)==0)
    {
        printf("hello");
        if(string[4]=='/')
        {
            printf(",\n");
            char* string1=strchr(string,'.');
            string1=strchr(string1,' ');
            printf("%s",string1);
            if(string1!=NULL)
            {
                if(*string1==" HTTP/1.1\r\n")
                {
                    printf("world\n");
                }
            }
        }
    }
} 

因为您不是在比较字符串,而是在比较指向字符串的指针。

正确的比较应该是:

if(!strcmp(string1," HTTP/1.1\r\n")) {
    ...
}

行:

if(*string1==" HTTP/1.1\r\n")

不比较两个字符串是否相等。

string1 的类型是 char*。因此 *string1 的类型是 char.

因此,您将 charchar const* 进行比较,这与您的预期相去甚远。

甚至使用

if(string1==" HTTP/1.1\r\n")

不会给你预期的结果,因为它会比较两个指针是否相等,这在这个用例中总是错误的。

你需要用到的是比较两个字符串的库函数

if( strcmp(string1, " HTTP/1.1\r\n") == 0)