Snprint tf(空,0,...);行为是否标准化? [英] Is snprintf(NULL,0,...); behavior standardized?

查看:18
本文介绍了Snprint tf(空,0,...);行为是否标准化?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Linux上,它返回要打印的字符数。

这是标准化行为吗?

推荐答案

是。

7.21.6.5开始,n1570(C11草稿):

Snprintf函数等同于fprint tf,只是输出 被写入数组(由参数s指定的fi),而不是写入 小溪。如果n为零,则不写入任何内容,并且s可能为空 指针。否则,第n-1个以外的输出字符为 丢弃而不是写入数组,并且为空字符 被写在实际写入 数组。如果在重叠的对象之间进行复制,则 行为未定义。

找到未知数据的长度是一种有用的方法,您可以首先为其找到必要的长度,然后分配准确的内存量。典型的用例是:

char *p;

int len = snprintf(0, 0, "%s %s some_long_string_here_", str1, str2);

p = malloc(len + 1);

snprintf(p, len + 1, "%s %s some_long_string_here", str1, str2);

这篇关于Snprint tf(空,0,...);行为是否标准化?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆