P.P*_*.P. 10
是.
从7.21.6.5 snprintf函数,N1570(C11草案):
snprintf函数等效于fprintf,除了输出被写入数组(由参数s指定)而不是流.如果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);
Run Code Online (Sandbox Code Playgroud)