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 に答える