Системная функция, кажется, игнорирует кавычки - PullRequest
2 голосов
/ 22 ноября 2010

Я использую следующий код (в Windows 7, если он имеет значение):

char temp[20000];
sprintf_s(temp, 20000, "\"C:\\Program Files\\Mozilla Firefox\\firefox.exe\" \"http://www.tvtak.com/servlet/Gateway/?C=addShows&channel=%s&show=%s\"", _channels[chId], name);
system(temp);

При запуске консоль отображает:

'C:\ Program 'не распознается как внутренняя или внешняя команда, работающая программа или командный файл.

«канал» не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл.

'show' не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл.

Но когда я получаю значение 'temp' через QuickWatch и вставляю его вCMD, работает нормально.Что здесь происходит?

Следует отметить, что параметры, которые я добавляю в строку, содержат нелатинские символы.Может ли это быть как-то связано с этим?

Ответы [ 2 ]

4 голосов
/ 22 ноября 2010

Вам лучше использовать CreateProcess(), чтобы избежать кавычек cmd.exe.Но если вы должны использовать system(), вы можете просто добавить if 1==1 в начало вашей команды, чтобы она не удаляла кавычки для вас.

system("if 1==1 \"C:\Program...");

Для получения дополнительной информации об этой проблеме запустите cmd.exe /? и ищите /S.

0 голосов
/ 22 ноября 2010

Вам нужно поместить всю строку в еще одну пару кавычек.И старайтесь избегать строк в стиле C в коде C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...