我对这段代码有问题>
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,尽管子字符串在那里......
我相信无符号 char * buf存在问题,有没有快速转换的方法,所以我可以使用strstr
函数?
答案 0 :(得分:1)
正确打印缓冲区以了解可能出现空字符的位置:
printf("%s\n", buf);
您的方法有几个问题:
buf[0]
可能已经是空字符,C中的数组从0
开始,而不是1
%c
在遇到空字符时可能无法打印strstr
停在第一个空字符