1

C言語で書かれたプログラムがあります。このプログラムには、整数変数 QS があります。この変数の値はプログラムの実行中に変化します C で記述されたこのプログラムで、この変数 QS を echo コマンド シェルを使用して表示したい

オムツCのシステム()機能について聞いたのですが、端末やコンソールを使うのに手を貸してくれます

system ("echo $ QS") を実行すると、変数 QS が認識されず、何も表示されません。

どうすればこれを行うことができるかについて、具体的な答えはありますか? C言語で変数を認識する方法は?

単純な printf でこの変数を表示できることはわかっていますが、必要なのは echo を使用することです。

ご回答ありがとうございます。

4

4 に答える 4

3

シェルはプログラム変数値にアクセスできません。最初に値を環境に設定する必要があります。これを行うにはさまざまな方法があります。それらの1つは(linux / unixで動作します)

int main()  
{  
    char chProgramVar[] = "hello world" ;  
    setenv("ShellVar", chProgramVar, 1) ;  
    system("echo $ShellVar") ;  
}  
于 2012-09-17T05:03:25.783 に答える
2

他の人が言っているように、シェルはプログラム変数にアクセスできません。を使用して、以下を使用sprintfして実行するコマンドに値を挿入できsystemます。

char command[BUFSIZ];

sprintf(command, "echo %d", QS);
system(command);
于 2012-09-17T05:14:52.753 に答える
1

呼び出しで生成しているシェルはsystem(3)、Cプログラムの変数について何も認識していません。必要なことを行う最も簡単な方法は、データを環境変数としてエクスポートすることです。環境はへの呼び出しによって継承されるためsystem(3)、変数を。で設定するだけですsetenv(3)。ただし、最初に文字列としてフォーマットする必要があります。

int QS = ...;
char QSStr[32];  // Longest integer string is INT_MIN = -2147483648, assuming
                 // that sizeof(int) == 4
snprintf(QSStr, sizeof(QSStr), "%d", QS);  // Convert to string
setenv("QS", QSStr);  // Set the environment variable)
...
system("echo $QS");  // Will print the value of QS
于 2012-09-17T05:04:34.297 に答える
-1

数値を文字バイトとしてフォーマットする必要があります。数値「4」は、印刷された文字とは異なる整数表現をしています。

printf を使用して数値を出力するか、sprintf を使用して文字として新しいバッファーに再フォーマットします。次に、システム エコーを使用して新しいバッファを出力できます (何らかの理由で)。

char s[16]; // might be too small
sprintf(s, "%d", integer_var); 
// s is the string  
于 2012-09-17T04:56:17.947 に答える