2012-04-11 52 views
0

我想發送一個整數作爲參數到C中的system()函數,但我一直沒有能力。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()功能;我只想舉一個我想要的例子。

有沒有辦法做到這一點,如果沒有,我還可以怎樣去做我上面描述的?

回答

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 

} 
+0

Thanx。我不像你們那樣專業,這對我來說很難:)我正在努力理解你的答案:) – J3y4Nf3R 2012-04-11 13:04:13

5

使用snprintf建立您的字符串並將其傳遞給system

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

感謝名單的傢伙。這對我很有幫助;) – J3y4Nf3R 2012-04-11 12:28:38