我想将一个整数作为参数发送到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()
函数的参数太多了;我只是想举一个我想要的例子。
有没有办法做到这一点,如果没有,我怎么能去做我上面描述的呢?
答案 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
}