2016-08-26 14 views
0

echo $c > 1.txtを送信したい場合は、システムCコールをどのように呼び出す必要がありますか? 1.txtcを送信できましたが、Cコード(つまり、cの値)で$c(スクリプトの意味で)をどのように送信できますか?system()Cコールに変数を渡す方法は?

私のコードは、このようなものです:私は、関数fopen/fwriteの/ fcloseをを使用してファイル内の100 1.txt

+0

'echo \ $ c'?あなたはシェルを起動しています。つまり、シェルメタカを考慮する必要があります。 –

+0

説明のために、私は$ cを例として挙げました。 私のコードは次のようなものです: void main() { int c = 100; システム( "echo c> 1.txt"); } ファイル1.txtに100を保存します。 – Harsha

+0

'fopen'を使ってテキストファイル' fprintf'を開き、 'fclose'を使ってファイルを開きます。 –

答えて

0

を保存したい

void main() { 
    int c =100; 
    system("echo c > 1.txt"); 
} 

が適切です。あなたは本当にあなたがこのようにそれを行うことができます呼び出しシステムを使用する場合は

int main(){ 
    int c =100; 
    char cmd_to_run[256]={'\0'}; 
    sprintf(cmd_to_run,"echo %d > 1.txt",c); 
    system(cmd_to_run); 
} 
+0

問題を指摘してくれてありがとう。答えを更新しました。 –

0

- 最初のシステムの文字列を準備します:あなたはシェルコードを使用したい場合はしかし、その後、以下のようなものは動作します

#include <stdio.h> 
#include <stdlib.h> 

int main(void) { 
    char str[42]; 
    int c = 100; 
    sprintf(str, "echo %d > 1.txt", c); 
    system(str); 
    return 0; 
} 

...しかし、C言語でそれを行う方法は、このようなものです:

#include <stdio.h> 
#include <stdlib.h> 

int main(void) { 
    int c = 100; 
    FILE *fil; 
    fil = fopen("1.txt", "wt"); 
    if(fil != NULL) { 
     fprintf(fil, "%d", c); 
     fclose(fil); 
    } 
    return 0; 
} 
2

あなたが適切なコマンドを構築するためにsprintf()機能を使用して、あなたのにそれを渡す必要があります210コール:

#include <stdlib.h> 
#include <string.h> 
#include <stdio.h> 

int main() { 
    int c = 100; 
    char buffer[128]; 
    sprintf(buffer, "echo %d > 1.txt", c); 
    system(buffer); 
    return 0; 
} 
関連する問題