#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");
}
}
}
}
}
答案 0 :(得分:4)
该行:
if(*string1==" HTTP/1.1\r\n")
不会比较两个字符串是否相等。
string1
的类型为char*
。因此,*string1
的类型为char
。
因此,您要将char
与char const*
进行比较,这远远超出您的预期。
即使使用
if(string1==" HTTP/1.1\r\n")
不会给你预期的结果,因为它会比较两个指针的相等性,这个用例一直都是假的。
您需要使用的是用于比较两个字符串的库函数。
if( strcmp(string1, " HTTP/1.1\r\n") == 0)
答案 1 :(得分:1)
因为您没有比较字符串,所以您要将指针与字符串进行比较。
正确的比较是:
if(!strcmp(string1," HTTP/1.1\r\n")) {
...
}