c - (新手) strstr() 返回带有无符号参数的 null

标签 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,尽 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/

相关文章:

c - 高斯随机数发生器

c - SIGTRAP : trace trap error in Golang wrapping C library, 但仅在运行 go test 时

java - 读取 10 位定点 float

python - 如何检查一行是否是 python 中的有效函数调用?

c# - 使用 Split 方法进行字符串操作

parsing - 作为读取消息的服务器,您如何找出消息的长度?

c - 如何在不调用未定义行为的情况下检查值是否适合类型?

c - 抑制或拦截来自其他 dll 的 CRT 实例的 CRT 检查

javascript - AJAX无法加载URL

android - 将字符串从 edittext 传递到新 Intent 会出现错误