作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只是想知道其中的区别,并且我已经尝试过在 Google 上进行搜索。
printf()printf_s()
最佳答案
今天我学到了一些新东西。我从未使用过 _s 函数,并且始终假设它们是供应商提供的扩展,但它们实际上是在附件 K“边界检查接口(interface)”下的语言标准中定义的。关于printf_s
:
K.3.5.3.3 Theprintf_s
function
Synopsis
1Runtime-constraints#define _ _STDC_WANT_LIB_EXT1_ _ 1
#include <stdio.h>
int printf_s(const char * restrict format, ...);
2<strong>format</strong>
shall not be a null pointer. The%n
specifier 394) (modified or not by flags, fieldwidth, or precision) shall not appear in the string pointed to by<strong>format</strong>
. Any argumentto<strong>printf_s</strong>
corresponding to a<strong>%s</strong>
specifier shall not be a null pointer.
3 If there is a runtime-constraint violation, theprintf_s
function does not attempt toproduce further output, and it is unspecified to what extent<strong>printf_s</strong>
produced outputbefore discovering the runtime-constraint violation.
Description
4 Theprintf_s
function is equivalent to theprintf
function except for the explicitruntime-constraints listed above.
Returns
5 Theprintf_s
function returns the number of characters transmitted, or a negativevalue if an output error, encoding error, or runtime-constraint violation occurred.
394) It is not a runtime-constraint violation for the characters%n
to appear in sequence in the string pointedat by format when those characters are not a interpreted as a%n
specifier. For example, if the entireformat string was%%n
.
总而言之,printf_s
对 printf
未完成的参数执行额外的运行时验证,并且如果任何运行时验证失败,则不会尝试继续。
_s
函数是可选,编译器不需要支持它们。如果它们受支持,则宏 __STDC_WANT_LIB_EXT1__
将被定义为 1,因此如果您想使用它们,您需要像
#if __STDC_WANT_LIB_EXT1__ == 1
printf_s( "%s", "This is a test\n" );
#else
printf( "%s", "This is a test\n" );
#endif
关于c - C语言中printf和printf_s有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55634311/
我正在尝试创建一个类,比如说 MyClass,在以下条件下工作: MyClass name = "everyone"; // Assigns "everyone" into a local str
这个问题在这里已经有了答案: Disabling Warnings generated via _CRT_SECURE_NO_DEPRECATE (10 个答案) 关闭 5 年前。 我目前正在尝试获
我是一名优秀的程序员,十分优秀!