如何使用与argv类似的Printf格式字符串

时间:2015-08-13 17:27:58

标签: c printf argv format-string

我正在尝试为我的程序添加支持,以便我可以输入/Input/Images/%03d.png /Output/Images/%03d.blah,但我不知道该怎么做?

我已经搜索了我能想到的格式字符串printfargv的每种组合。

我希望能够将%03d之前的所有内容作为常量加载,并循环遍历%03d以按顺序选择多个不同的输入文件来读取它们。所以它将是/Input/Images/000.png,然后/Input/Images/001.png一直到/Input/Images/999.png

tl; dr我想处理一系列文件,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

你可以这样做。解决方案在字符串大小检查方面有很多不足之处,但基础就是这样。

输入要处理的批次中的路径和文件编号以及文件数。

#include <stdio.h>

int main (int argc, char *argv[])
{
    unsigned basenum, numfiles, i;
    char inname[1000], outname[1000];

    if (argc < 5)
        return 1;
    sscanf(argv[3], "%u", &basenum);
    sscanf(argv[4], "%u", &numfiles);
    for (i=0; i<numfiles; i++) {
        sprintf (inname, "%s/%03u.png", argv[1], basenum + i);
        sprintf (outname, "%s/%03u.blah", argv[2], basenum + i);
        //convertimg (inname, outname);
        printf ("Processed %s to %s\n", inname, outname);
    }
return 0;
}

节目输入

test aaa dest/bbbb 100 10

节目输出

Processed aaa/100.png to dest/bbbb/100.blah
Processed aaa/101.png to dest/bbbb/101.blah
Processed aaa/102.png to dest/bbbb/102.blah
Processed aaa/103.png to dest/bbbb/103.blah
Processed aaa/104.png to dest/bbbb/104.blah
Processed aaa/105.png to dest/bbbb/105.blah
Processed aaa/106.png to dest/bbbb/106.blah
Processed aaa/107.png to dest/bbbb/107.blah
Processed aaa/108.png to dest/bbbb/108.blah
Processed aaa/109.png to dest/bbbb/109.blah