2012-03-15 6 views
-2

誰でも私に教えてください。私たちは "system"関数を使用してcの中でいくつかのシェルコマンドを使用しています。さらに私は以下のコマンド、すなわち6,2,8をパラメータとして与えたいと思っています。gawk inside cを使用

gawk -v FIELDWIDTHS='6 2 8' 'NR!=1 && x==$1{printf(" %d:%d",strtonum("0x"$2),strtonum("0x"$3)); next}; {x=$1; printf("%s%s %d:%d", NR==1?"":"\n", $1,strtonum("0x"$2),strtonum("0x"$3))}; END{print ""}' input.txt | sed '/^[0-9a-f]* [0-9:]*$/d' > result.txt 

おかげで、任意のヘルプは大歓迎されます。

+4

なぜsystem()を使って呼び出すことができないのですか? –

+0

私はsystem()を使ってみましたが、次のエラーが表示されます:prog.c:73:エラー: 's 'は宣言されていません prog.c:73:error:(未宣言の各識別子は、一度だけ prog.c:73:エラー:表示される各関数について) prog.c:73:エラー:文字列定数の前に構文エラーが発生しました prog.c:73:エラー:プログラム内で '\'が浮いています – mezda

+1

@ user1182722 '$ 1 {prinf \"%d:%d \ "、...、' ...:\ "\\ n \文字列リテラルにクォータとバックスラッシュをエスケープする必要があります。 "、..."など。 –

答えて

1

snprintfを使用して変数を含む文字列を作成し、その出力を含むファイルを返すコマンドをpopenに渡すことができます。たとえば:

char buffer[1024]; 
snprintf(buffer, sizeof(buffer), "<insert command here>", var1, var2); 
FILE output = popen(buffer, "r"); 

私はあなたは自分のCプログラムで出力を使用しようとしているがあれば、あなたはあなたのコマンドにresult.txtに出力を指示することを承知しているのpopenによって返されたファイルは十分なはずです。私は自分自身でこれを試していないので、それが動作するかどうかを教えてください。

関連する問題