Как правильно использовать «

#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-адрес в браузере?