参数为system()func?

时间:2012-04-11 12:11:06

标签: c linux system system-calls

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

我想这样做是因为我有一些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()函数的参数太多了;我只是想举一个我想要的例子。

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

2 个答案:

答案 0 :(得分:5)

使用snprintf构建字符串并将其传递给system

char cmd[LEN];
snprintf(cmd, sizeof(cmd), "eog %d.jpg &", i);
system(cmd);

答案 1 :(得分: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

}