0

我想将一个整数作为参数发送给system()C 中的函数,但我做不到。

我想这样做是因为我有一些 jpg 文件,它们通常被命名为程序会为一个整数变量分配一个随机选择的值,并使用该函数1.jpg , 2.jpg ... 17.jpg ... ect.打开与随机选择的整数同名的图像文件。system()

我的设想:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

main()
{
    srand(time(NULL));
    i=rand()%30+1; // for example i=17
    system("eog %d.jpg &",i);  //and i want to open 17.jpg here with eog
}   

我知道上面的函数有太多参数system();我只是想举一个我想要的例子。

有没有办法做到这一点,如果没有,我还能怎么做我上面描述的事情?

4

2 回答 2

5

用于snprintf构建您的字符串并将其传递给system.

char cmd[LEN];
snprintf(cmd, sizeof(cmd), "eog %d.jpg &", i);
system(cmd);
于 2012-04-11T12:12:57.400 回答
1

您需要将整数转换为字符串参数:

int runSystem(const char *fmt, ...)
{
    char buffer[4096];
    va_list va;
    va_start(va, fmt);
    vsnprintf(buffer, sizeof(buffer), fmt, va);
    va_end(va);
    return system(buffer);
}

main()
{
    srand(time(NULL));

    i=1+rand()%30; // for example i=17

    runSystem("eog %d.jpg &",i);  //and i want to open 17.jpg here with eog

}   
于 2012-04-11T12:15:33.600 回答