2012-04-11 4 views
0

Я хочу отправить целое число как параметр функции system() в C, но я не смог.Параметр для системы() func?

Я хотел бы сделать это, потому что у меня есть некоторые файлы 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

5

Используйте snprintf, чтобы построить свою строку и передать ее system.

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

парень спасибо. Это очень полезно для меня;) – J3y4Nf3R

Смежные вопросы