удалить '\ n' из программы - PullRequest
2 голосов
/ 16 ноября 2011
system(do_this); // which executes an external program to output a phrase on the screen
printf("=My taxes");

Выход:

500 $

= Мои налоги

Ожидаемый результат:

500 $ = Мои налоги

У меня нет контроля над кодом, выполняющимся в do_this, который автоматически выводит '\n'.

Ответы [ 2 ]

5 голосов
/ 16 ноября 2011

Это должно работать:

system("program | tr -d '\012\015'");
printf("=My taxes\n");

, где program - программа, которую вы хотите запустить.Команда tr удаляет все символы CR и LF (восьмеричные коды 015 и 012) из ​​вывода программы .Решение предполагает, что программа выводит только одну строку (ваш налог) и работает в системах с окончаниями строк CR, LF, CR + LF, LF + CR (включает все широко используемые операционные системы, такие как MacOS, Linux и Windows).

1 голос
/ 16 ноября 2011

Другой вариант - изменить системный вызов на использование утилит для удаления новой строки

Вместо этого системный вызов будет

system("a.out");

Измените его на

system("a.out | awk '{ printf(\"%s\",$0); }'");
...