0

我对这段代码有疑问>

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函数吗?

4

1 回答 1

1

正确打印缓冲区以了解可能出现空字符的位置:

printf("%s\n", buf);

您的方法有几个问题:

  • buf[0]可能已经是一个空字符,C 中的数组开始于0而不是1
  • %c遇到空字符时可能什么也不打印
  • strstr在第一个空字符处停止
于 2012-08-18T14:22:40.340 回答