我有一个格式化字符串,正在解析它并将格式说明符替换为输入参数。现在我在考虑如何为替换参数后的结果字符串分配内存。我可以将该字符串分配为与格式化字符串一样长,但是将任何长字符串的
%s
替换为其他字符串,则需要以某种不确定的方式重新分配此字符串,这会导致代码中出现一些不雅的计算。因此,我想我可以按字符逐个分配此由格式化字符串创建的字符串,每次重新分配它,例如:/*** for loop traversing next chars in format string ***/
// if new char
str = realloc(str, sizeof(*str) +1);
// if %s
str = realloc(str, sizeof(*str) + strlen(in_str));
// if %d
str = realloc(str, sizeof(*str) + strlen(d_str));
sizeof(*str)
并不是到目前为止分配的字符串的大小。 - chqrliestr = realloc(str,
这个模式不允许从内存不足中恢复。 - M.Mrealloc()
的次数。 - Andrew Henle