从程序中删除'\ n'

时间:2011-11-15 22:45:55

标签: c system newline

system(do_this); // which executes an external program to output a phrase on the screen
printf("=My taxes");

输出:

  

$ 500

     

=我的税

预期产出:

  

500 $ =我的税

我无法控制do_this中执行的代码,该代码会自动输出'\n'

2 个答案:

答案 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); }'");