system(do_this); // which executes an external program to output a phrase on the screen
printf("=My taxes");
输出:
$ 500
=我的税
预期产出:
500 $ =我的税
我无法控制do_this
中执行的代码,该代码会自动输出'\n'
。
答案 0 :(得分:5)
这应该有效:
system("program | tr -d '\012\015'");
printf("=My taxes\n");
其中 program 是您要运行的程序。 tr
命令从程序的输出中删除所有CR和LF字符(代码015和012八进制)。该解决方案假设 program 仅输出一行(您的税),它适用于具有行结尾CR,LF,CR + LF,LF + CR的系统(包括所有广泛使用的操作系统,如MacOS,Linux和窗口)。
答案 1 :(得分:1)
另一个选择是更改系统调用以使用utils去除换行符
而是系统调用
system("a.out");
将其更改为
system("a.out | awk '{ printf(\"%s\",$0); }'");