C系统()调用失败,错误"未终止字符串"

cor*_*ews 2 c

我有一小段c代码,应该在我的linux机器上运行awk命令.然而,对于我的生活,它不会执行.如果我直接在终端中运行它,awk就可以工作.

我当前失败的命令

system("awk '{ printf \"%d \n\", $12 }' results.dat | sort -n");
Run Code Online (Sandbox Code Playgroud)

它失败了

awk: { printf "%d 
awk:          ^ unterminated string
Run Code Online (Sandbox Code Playgroud)

你怎么逃避双引号,以便命令运行?另外为什么会失败,但是当我用printf替换系统调用时它会打印出来?

Dan*_*ant 8

也许你应该\n再次逃脱,如同

system("awk '{ printf \"%d \\n\", $12 }' results.dat | sort -n");
//                         ^ note the extra \
Run Code Online (Sandbox Code Playgroud)

因为我认为\n它应该成为其中的一部分printf.

你当前的构造调用system带有一个参数

awk '{ printf "%d 
", $12 }' results.dat | sort -n
Run Code Online (Sandbox Code Playgroud)