#c
#c
Вопрос:
Я хочу вызвать URL-адрес в программе на C, который содержит некоторые «amp;». Система распознает URL-адрес только до тех пор, пока «amp;» (https://chart.googleapis.com/chart?cht=qr ) и говорит мне, что он не знает команды cht и chl. Как я могу заставить его использовать весь URL-адрес?
char get_qr[100];
sprintf (get_qr, "start https://chart.googleapis.com/chart?cht=qramp;chs=500x500amp;chl=Hello World!);
system (get_qr);
Комментарии:
1. Не могли бы вы опубликовать фактический код, который компилируется?
Ответ №1:
Проблема не в обработке URL-адреса, а в том, что вы запускаете команду оболочки с помощью system
.
Команды оболочки должны быть заключены в кавычки. В частности, amp;
это специальный символ оболочки. Поэтому заключите аргумент команды оболочки в кавычки:
system("start "https://chart.googleapis.com/chart?cht=qramp;chs=500x500amp;chl=Hello World!"");
(В вашем коде в этом нет необходимости в sprintf
любом случае. Если требуется ваш фактический код sprintf
, не просто выделяйте статический буфер; выделите динамический буфер правильного размера!)
Комментарии:
1.
start
это делает меня частью Windows, поэтому я бы использовал двойные кавычки…2. @SergeBallesta Черт, я думал об этом, а потом все равно использовал одинарные кавычки. Вы, конечно, правы!
3. Спасибо за ответ! Если я использую двойные кавычки, как вы предполагаете, это больше не открывает браузер, а открывает окно терминала. Есть ли способ сообщить системе, что ей необходимо открыть URL-адрес в браузере?