(新手)strstr()使用unsigned param返回null

时间:2012-08-18 14:05:55

标签: c string parsing pointers unsigned

我对这段代码有问题>

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

1 个答案:

答案 0 :(得分:1)

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

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

您的方法有几个问题:

  • buf[0]可能已经是空字符,C中的数组从0开始,而不是1
  • %c在遇到空字符时可能无法打印
  • strstr停在第一个空字符