【发布时间】:2012-08-18 14:05:54
【问题描述】:
我对这段代码有问题>
int parse_useragent (unsigned char* buf )
{
int i;
for (i=1; i < 200; i++)
{
printf("%c ", buf[i-1]); // this prints string with "User-Agent" inside
}
unsigned char * scanner = strstr(buf, "User-Agent:"); //returns NULL?
if (scanner == NULL)
{
printf("NULL!!! /n");
return DEFAULT_USERAGENT;
}
/* ... */
strstr 函数返回 NULL,尽管子字符串在那里...
我认为 unsigned char* buf 有问题,有什么方法可以快速转换,以便我可以使用strstr 函数?
【问题讨论】:
-
您说,那个 buf 包含“User-Agent”(不带冒号),但您正在搜索“User-Agent:”(带冒号)
-
我怀疑签名是否会成为问题,因为当您将
buf作为参数传递时,它会被转换为char*。 -
首先,
buf是否保证为空终止?此外,您的strstr()将匹配一行中间的User-Agent:。 -
CyberDem0n : 尝试与“用户”一起出现同样的问题 Michal : 不保证被 null 终止...
-
我解析http包数据,所以buf中不包含疯狂的东西……
标签: c string parsing pointers unsigned