代码之家  ›  专栏  ›  技术社区  ›  MarcusJ

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

  •  -3
  • MarcusJ  · 技术社区  · 9 年前

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

    我搜索了格式字符串的每个组合, printf argv 我能想到的。

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

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

    1 回复  |  直到 9 年前
        1
  •  1
  •   Weather Vane    9 年前

    你可以这样做。该解决方案在字符串大小检查方面还有很多需要改进的地方,但其基础就是这一点。

    输入要处理的批处理中的路径、文件编号基数和文件数量。

    #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