在C中迭代请求行

时间:2016-12-16 20:39:42

标签: c http web get httprequest

我正在尝试迭代HTTP请求行以确定其合法性。最终,我的服务器将不知道请求行的样子或者它将持续多长时间。假设合法请求与下面的请求完全相同。请注意,它只有两个空格,一个?,没有内部“。我需要遍历请求行来检查空格,但是因为我事先不知道它的长度而不想声明一个任意大小的数组,它有点像读盲文。下面是我试图发现它是否包含两个空格或其他东西。它返回一个错误,表明我正在比较整数和指针。我被告知除了迭代之外,以下函数可能会有所帮助:strchr,strcpy,strncmp,strncpy,strstr。任何方向都将非常感谢!

int main ()
{
    const char* line = "GET /path/script.cgi?field1=value1&field2=value2 HTTP/1.0";

    parse(line);

}

bool parse(const char* line)
{   
    int spaces = 0;
    int n = strlen(line);
    for (int i = 0; i < n; i++)
    {
        if (line[i] == " ")
            spaces++;
    }
    if (spaces == 2)
    {
        printf("Only 2 spaces!\n");
        return true;
    }
    else
    {
        printf("Illegal request! More than two spaces! Hacker! Hacker! Help!\n");
        return false;
    }

}

1 个答案:

答案 0 :(得分:1)

你需要一个带单引号的空格字符,而不是双引号