在字符串缓冲区C中查找特定单词的更佳方法

时间:2016-06-15 22:13:55

标签: c http http-request

我制作了一个解析HTTP标头的应用。我试图找到一种更好的方法来通过POST方法过滤HTTP数据包,而不是我提出的方法。我想要完成的是利用我知道所有POST方法包字符串以“POST”开头的事实。有没有办法搜索字符串的第一个单词,存储它然后使用它的条件?我的代码有效,但我不想搜索整个数据包的“POST” - 例如,你永远不知道什么时候你在GET数据包中得到“POST”这个词。

   char re[size_data];
   strncpy(re,data,size_data);   //data is the buffer and size_data the buffer size
   char * check;
   check = strstr(re,"POST"); 
   if(check!= NULL)
  { *something happens* }

1 个答案:

答案 0 :(得分:2)

由于您只想检查数据包开头的字符串“POST”,您可以使用strncmp功能,例如

if ( strncmp( re, "POST ", 5 ) == 0 )
{
    // this is a POST packet
}

正如@jxh在评论中所指出的,strncpy可能会导致问题,因为除非字符串长度小于size_data,否则它不会为字符串终止null。为确保字符串正确终止,代码应如下所示

char re[size_data+1];
strncpy(re,data,size_data);
re[size_data] = '\0';