1

私は小さなアプリ (C) で遊んでいます。実行すると、ディレクトリ ツリーが作成され、そこにファイルが読み込まれます。フォームの一連の行を使用してこれを行います

system("echo \"lump = \" >> ./newdirectory/newfile.c");

それ自体が呼び出しを含む新しいファイルに C の行を書き込もうとする場合を除いて、これは正常に機能していsystem("echo");ます。

具体的には、

system("echo \"system(\"echo hello world\");\" >> ./newdirectory/newfile.c");

のように書かれます

system(echo hello world);

4

2 に答える 2

3

エスケープ文字をそのまま表示したいので、それらもエスケープする必要があります。はい、エスケープ文字をエスケープできます。何かのようなもの:

"\\\""

\これにより、 の後に が出力されます"

于 2012-10-21T21:28:06.793 に答える
2

クレイジープレイです。しかし、このクレイジーさの正しい方法は、文字列をエスケープする C 関数を記述することだと思います。

内部文字列は二重エスケープする必要があります。

system("echo \"system(\\\"echo hello world\\\");\" >> ./newdirectory/newfile.c");

Othervise first C unescape リテラル文字列と shell get

echo "system("echo hello world");" >> ./newdirectory/newfile.c

エスケープされていないエコーの引用符が間違っています。

于 2012-10-21T21:40:43.997 に答える