SF.*_*SF. 2 c c++ string format printf
当遇到%c给定值为\0/ 的格式时,采用printf格式字符串的各种函数如何表现NULL?他们应该怎么做?安全吗?它定义了吗?它是特定于编译器的吗?
例如sprintf()- 它会将结果字符串裁剪为NULL吗?它会返回多长时间?
会printf()输出整个格式字符串还是只输出新的NULL?
将va_args+ vsprintf/ vprintf以某种方式影响?如果是这样,怎么样?
如果我在std :: string.c_str()中的某个位置拍摄此NULL,是否存在内存泄漏或其他问题的风险?
避免这种警告的最佳方法是什么(消毒输入?)
任何采用标准C字符串的函数都会在第一个null处停止,无论它是如何到达的.
当您在格式中使用%c并使用0作为字符值时,它将在输出中插入null.printf将输出null作为输出的一部分.sprintf还会将null插入到结果字符串中,但是当您将输出传递给另一个函数时,该字符串将在该点结束.
std :: string将很乐意在其内容中的任何位置包含null,但是当您使用c_str方法将其传递给函数时,请参阅上面的答案.