unix コマンドを使用してファイルに挿入したい
New_IP=New_IP=strtok(Network_config,delimeter);
system("sed -i ' i '$New_IP' ' Network_settings.txt");
このような値を環境変数としてコマンド ラインに渡し、シェルに展開させるのが最も安全です。これにより、大量の文字列エスケープの手間が回避されます。かもね:
New_IP=strtok(Network_config,delimeter);
setenv("New_IP", New_IP);
system("sed -i \" i $New_IP \" Network_settings.txt");
/* note backshaled \" in string above are for C compiler */
注: sedコマンドを使用する場合、 sedはそれらをバックスラッシュでエスケープする必要がNew_IP
あるため、誤って改行が含まれている場合、上記は機能しません。また、改行を許可すると、入力に sed コマンドを追加できるようになり、たとえば sedコマンドで何か厄介なことをする可能性があります。したがって、 sedに対して definitiley をサニタイズする必要がありますが、幸いなことに、シェルのサニタイズよりもはるかに簡単です。これは、env 変数を使用することで回避できます。 i
w
New_IP
$New_IP
他のスクリプト言語のように C 文字列で使用することはできません。
cでは、たとえば、この方法で変数を挿入する必要があります
char *command;
asprintf(command, "sed -i ' i '%s' ' Network_settings.txt", New_IP);
system(command);
free(command) // if command is useless in your code then free it