我现在正在学习 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。更糟糕的是,这可能是用户试图利用您的程序(导致它读取不安全读取的数据)。 (见答案)
但是我必须在我的情况下添加什么才能没有来自编译器的警告?