C++中printf()函数的用法5

printf()函数的type是%n时,不是表示打印数据,而是将打印信息的数量保存到指定的变量中,需要注意的是,在printf()函数中使用%n时,其对应的参数是变量的地址。

1 打开%n的开关

当printf()使用%n时,会有不安全的隐患,因此,默认情况下,%n是不能使用的。如果需要使用,则要打开%n的开关。

1.1 获取%n的开关状态

通过_get_printf_count_output()函数获取当前%n的开关状态。如果%n是不能使用,则返回值是0,否则返回值是1。

​​​​​​​1.2 设置%n的开关状态

通过_set_printf_count_output()函数设置%n的开关状态。当该函数的参数是0时,则关闭%n的开关,如果参数是非零值,则打开%n的开关。_set_printf_count_output()函数的返回值是修改之前的%n的开关状态,不能使用,则返回值是0,否则返回值是1。

2 使用%n

以下代码在printf()中使用了%n

int a;

int e;

e = _get_printf_count_output();

if (e == 0)

{

  _set_printf_count_output(1);

}

printf("12345%n", &a);

此时,a的值是%n之前的字符串的长度,即此时a的值是5。如果%n的位置变为

printf("123%n45", &a);

此时,a的值是%n之前的字符串的长度,即a的值是3。

发布了314 篇原创文章 · 获赞 206 · 访问量 61万+

猜你喜欢

转载自blog.csdn.net/hou09tian/article/details/105631883