我有一个 sprintf 命令由于参数变量中的 %s 而崩溃。除了使用 %%.
转义参数字符串之外,建议的解决方法是什么?char* s="abc%sabc";
char a[100];
sprintf(a,"The message is : %s",s);
我们将不胜感激。
最佳答案
不要使用 printf
打印任意字符串。使用 puts
或格式化字符串:
char const *evil;
// Bad:
printf(evil);
// Good:
puts(evil);
fputs(evil, stdout);
// Acceptable:
printf("%s", evil);
请注意,“坏”版本不仅在某些沉闷的计算机科学方面在理论上是坏的,而且实际上可以立即利用它来执行任意代码和泄露数据,这要归功于 %n
-like格式处理。
关于c++ - 由于参数变量中的 %s,sprintf 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18952670/