Как обращаться с пробелами внутри путей при использовании system ()?

#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 .

Они выполняют программу напрямую, минуя интерпретатор командной оболочки, что позволяет избежать какой-либо специальной обработки специальных символов, таких как пробелы.