0

Cの関数にパラメーターとして整数を送信したいのですが、送信system()できませんでした。

1.jpg , 2.jpg ... 17.jpg ... ect.プログラムが整数変数にランダムに選択された値を割り当て、関数を使用してランダムに選択された整数と同じ名前の画像ファイルを開くという名前のjpgファイルがいくつかあるので、これを実行したいと思い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 に答える