C变量用户为snprintf提供的格式字符串
例如,我想制作一个这样的文件C变量用户为snprintf提供的格式字符串,c,string,C,String,例如,我想制作一个这样的文件 hello %s %d seconds more %d is more than %d 其中,所有格式字符串均由用户提供,并将由程序使用snprintf进行更改 问题是,如果我因为snprintf使用固定的参数值而更改格式字符串的发生率。-最后的参数 为了理解我的想法,例如,这就是我想要的 snprintf(dest_buffer, strlen(file_buffer), file_buffer, "user123", 1, 3, 2); 如果我对该文件再执行
hello %s
%d seconds more
%d is more than %d
其中,所有格式字符串均由用户提供,并将由程序使用snprintf进行更改
问题是,如果我因为snprintf
使用固定的参数值而更改格式字符串的发生率。-最后的参数
为了理解我的想法,例如,这就是我想要的
snprintf(dest_buffer, strlen(file_buffer), file_buffer, "user123", 1, 3, 2);
如果我对该文件再执行一次%s,那么函数肯定会正常工作
原因3是snprintf的最后一个参数
有人能提供示例代码或想法来解决这个问题吗
注意:文件缓冲区指向字符串“hello%s%d秒…”
注意:我知道格式字符串可能很危险。。thx我可以想到两种选择:
*printf()
(或者使用合适的函数查找第三方库)不过要小心。正如您所指出的,这很容易出错,也很危险。:) 您可能需要
sizeof(dest\u buffer)
而不是strlen(file\u buffer)
(假设dest\u buffer
是一个数组,您至少需要传递其长度)。文件如何指定要转换的变量?“hello%s”是否与snprintf(…某些字符串)
一起使用,以及与snprintf(…某些字符串)
一起使用“%d秒”等等?我知道ulfilizer,我刚刚写了它,让您很快就明白了。。。chux就像我说的,文件会改变,格式字符串会改变…thx是我想要的,所以。。。我会看看parse_printf_格式,或者考虑一下thx ulfalizer