我正在尝试迭代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;
}
}
答案 0 :(得分:1)
你需要一个带单引号的空格字符,而不是双引号