【发布时间】:2023-03-17 01:35:01
【问题描述】:
以下C函数:
int sprintf ( char * str, const char * format, ... );
将格式化数据写入字符串。作为 str 传递的数组的大小应该足以包含整个格式化字符串。但是,如果事先不知道格式化字符串的长度怎么办?如何使用此函数(或其他类似函数)写入长度未知的格式化数据?
例如:
#include <stdio.h>
int main ()
{
char buffer [13];
int n, a=5, b=3;
n=sprintf (buffer, "%d plus %d is %d", a, b, a+b);
printf ("[%s] is a %d char long string\n",buffer,n);
return 0;
}
缓冲区需要为 13 或更大才能正常工作。如果字符串长度未知,并且缓冲区(例如已设置为 5),这将不起作用。我需要一些可以为碰巧大于缓冲区的字符串动态分配或重新分配缓冲区的东西。
【问题讨论】:
-
@Charles:这是作业吗?
-
@RageZ:不,不是。我只是一个想在空闲时间学习一些 C 的初学者。
-
@RageZ。哈哈哈