美文网首页
snprintf的返回值代表字节数 != 实际写入字节数

snprintf的返回值代表字节数 != 实际写入字节数

作者: 阿群1986 | 来源:发表于2019-10-30 15:32 被阅读0次
    #include <stdio.h>
    int main(void)
    {
        char buf[4];
        int cnt=0;
    
        cnt = snprintf(buf, sizeof(buf), "(%x)", 0xF123);
    
        printf("buf = %s\n", buf);
        printf("cnt = %d\n", cnt);
        return 0;
    }
    

    上述代码的运行结果,snprintf()返回值 cnt = 6大于buf的实际字节数:

    buf = (f1
    cnt = 6
    按 <RETURN> 来关闭窗口...
    

    继续测试

    修改buf数组字节数(例如改为2):

    #include <stdio.h>
    int main(void)
    {
        char buf[2];
        int cnt=0;
    
        cnt = snprintf(buf, sizeof(buf), "(%x)", 0xF123);
    
        printf("buf = %s\n", buf);
        printf("cnt = %d\n", cnt);
        return 0;
    }
    

    char型数组char buf[4];无论分配多少个字节, 运行结果cnt都等于6!

    buf = (
    cnt = 6
    按 <RETURN> 来关闭窗口...
    

    相关文章

      网友评论

          本文标题:snprintf的返回值代表字节数 != 实际写入字节数

          本文链接:https://www.haomeiwen.com/subject/vpwovctx.html