2015-10-02 30 views
0

由於格式字符串經常出現,我有時會遇到需要格式化字符串的情況,然後將該字符串發送到第二個函數以再次格式化。例如,我需要使用命令行工具將圖像轉換爲視頻,命令行工具需要將圖像%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應該出現的位置。格式化後,將%語句保留爲字符串的安全/可靠方法是什麼?

回答

0

您是否嘗試過在第一個實例中使用%%轉義%,以便將其視爲字符串,然後在第二個實例中將%%替換爲%,並將其返回爲格式說明符?