Я изучаю теперь c и я придумываю этот пример, где я могу печатать текст с помощью указателей.печатать текст по указателю
#include <stdio.h>
main()
{
char *quotes = "One good thing about music, when it hits you, you feel no pain. \"Bob Marley\"\n";
printf(quotes);
}
я получаю предупреждение от компилятора «формата не строковые и не аргументов формата», и когда я выполнить программу он работает успешно.
Я прочитал несколько других вопросов здесь, что у них было такое же предупреждение от компилятора, но я не нашел ответа, который мне подходит. Я понял причину, по которой я получаю это сообщение:
Это предупреждение - это способ gcc сообщить вам, что он не может проверить аргумент строки формата для функции стиля printf (printf, fprintf ... и т. Д.). Это предупреждение генерируется, когда компилятор не может вручную заглянуть в строку и убедиться, что все будет идти так, как вы планируете во время выполнения ...
Случай 3. Теперь это ваш случай. Вы берете строку, сгенерированную во время выполнения, и пытаетесь ее распечатать. Предупреждение, которое вы получаете, это компилятор, предупреждающий вас о том, что в строке может быть спецификатор формата. Скажем, например, «bad% sdata». В этом случае среда выполнения попытается получить доступ к несуществующему аргументу для соответствия% s. Хуже того, это может быть пользователь, пытающийся использовать вашу программу (заставляя ее читать данные, которые небезопасно читать). (See the answer)
но то, что я должен добавить в моем случае для того, чтобы не предупреждения от компилятора?
+1 для усилий и поиска, которые вы выполнили перед отправкой вопроса. – yaylitzis