忽略格式字符串中的一些%参数

时间:2015-10-02 17:21:49

标签: string printf string-formatting

由于格式字符串经常出现,我有时遇到需要格式化字符串的情况,然后将该字符串发送到第二个函数以便再次格式化。例如,我需要使用命令行工具将图像转换为视频,命令行工具需要将图像%d作为输入。

我尝试了几种不同的方法,例如在格式字符串中放入%s语句并传递%d来填写%s,但似乎有时候它们有效,有时它们却没有。我也试过\%\ d,但这似乎也不起作用。

char *dir = "workingdirectory";
char *moviename = "movie.mp4";

char buffer[1000];//The string to pass to system
sprintf("avconv %s/image%s.png %s",dir,"%d",moviename);//This statement is not quite correct for this tool, because I only included inputs and outputs.
//Desired string: "avconv workingdirectory/image%d.png movie.mp4"

system(buffer);

当我因某种原因运行此代码时,会出现一个大整数,即%d应该在哪里。什么是在格式化后将%语句留在字符串中的安全/可靠方法?

1 个答案:

答案 0 :(得分:0)

您是否尝试在第一个实例中使用%%转义%,因此将其视为字符串,然后在第二个实例中将%%的出现替换为%,这将使其返回为格式说明符?