我对这段代码有疑问 >
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,尽 pipe 字符串在那里......
我相信 unsigned char* buf 有问题,是否有任何快速转换的方法,以便我能够使用 strstr
函数?
最佳答案
正确打印缓冲区以了解空字符可能出现的位置:
printf("%s\n", buf);
您的方法存在几个问题:
- <罢工>
buf[0]
可能已经是空字符,C 中的数组从0
开始而不是1
罢工> -
%c
当遇到空字符时可能不打印任何内容 -
strstr
在第一个空字符处停止
关于c - (新手) strstr() 返回带有无符号参数的 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12019194/