#c #system
#c #система
Вопрос:
Я все еще новичок в C и разрабатываю способ открыть программу в моей программе на C . Проблема в том, что всякий раз, когда у меня есть пробелы в моих путях, он видит это как разные параметры.
int _tmain(int argc, _TCHAR* argv[])
{
system("C:\Users\blah\Desktop\a\ b.txt");
return 0;
}
Результат, который я получаю, является:
'C:UsersblahDesktopa' is not recognized as an internal or external command, operable program or batch file.
Ответ №1:
Вы можете заключить строковый литерал в двойные кавычки. Редактировать: Также только что заметил, что ваши обратные косые черты не были экранированы, поэтому обновлено ниже: P
system(""C:\Users\blah\Desktop\a\ b.txt"");
Также сообщайте для протокола, что вам действительно не следует использовать system
. Попробуйте fork, spawn или, возможно, даже неофициальный класс boost.process, который имеет функциональность, аналогичную классу .NET process, в зависимости от ваших потребностей. Также подумайте о том, зачем вам нужно запускать процесс из процесса … возможно, вы могли бы создать библиотеку?
Ответ №2:
В Unix вы могли бы использовать fork() exec().
В Windows проверьте spawn .
Они выполняют программу напрямую, минуя интерпретатор командной оболочки, что позволяет избежать какой-либо специальной обработки специальных символов, таких как пробелы.