Системный вызов C () завершается с ошибкой «неопределенная строка» - PullRequest
2 голосов
/ 14 марта 2009

У меня есть небольшой фрагмент кода на c, который должен запускать команду awk на моей машине с Linux. Однако для меня жизни это не будет exec. Awk работает, если я запускаю его непосредственно в терминале.

Моя текущая неудачная команда

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

Не удается с

awk: { printf "%d 
awk:          ^ unterminated string

Как еще вы можете избежать двойных кавычек, чтобы команда выполнялась? Кроме того, почему это не удается, но когда я заменяю системный вызов на printf, он будет печататься?

1 Ответ

8 голосов
/ 14 марта 2009

Возможно, вам следует снова избежать \n, как в

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

как я думаю, \n должен быть частью printf.

Ваша текущая конструкция вызывает system с аргументом

awk '{ printf "%d 
", $12 }' results.dat | sort -n
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...