告诉sscanf将\ 0视为要读取的有效字符

时间:2014-05-15 13:31:17

标签: c linux

我正在使用格式化字符串解析文件。需要一些解析帮助。 请考虑以下示例。

int main()
{
    char value[32], name[32];
    int buff_ret1, buff_ret2;
    char *buff = "1000000:Hello";
    char *buff_other ="200000:\0";
    buff_ret1 = sscanf(buff,"%[^:]:%s", value, name);
    printf("buff_ret1 is %d\n", buff_ret1);

    buff_ret2 = sscanf(buff_other,"%[^:]:%s", value, name);
    printf("buff_ret2 is %d\n", buff_ret2);
    return 0;
}

我希望buff1_retbuff2_ret的值为2,但buff_ret2值为1.我明白它不考虑NUL。有没有办法可以对sscanf函数说明将NUL视为要阅读的字符。

1 个答案:

答案 0 :(得分:3)

不,这是不可能的。来自sscanf

  

在sscanf()中到达字符串的末尾应该等同于遇到fscanf()的文件结尾。

这意味着\0(字符串结尾)被解释为文件结尾。