c语言之各种printf(printf, sprintf, snprintf, swprintf, fprintf, fwprintf, vsprintf, vsnprintf, vswprintf, vfprintf,vfwprintf)

一、v|s|f|n|w的含义

  v:参数作为va_list一个整体传入

  s:输出对象为内存缓冲区(char*, wchar_t*)

  f:输出对象为文件流(char*, wchar_t*)

  w:宽字符串版本

  n:与's'一块出现,需要指定内存缓冲区长度。输出到 标准输出 与 文件 时,无此前缀

二、'_s'结尾含义

  '_s'结尾的为安全版本,有以下增强功能。

  1、参数验证

  2、增强的错误报告

  3、格式字符串语法检查

  参见:https://learn.microsoft.com/zh-cn/cpp/c-runtime-library/security-features-in-the-crt?view=msvc-170

三、附表

 类型 标准输出 字符串缓存 文件 差异
可变参数

printf

wprintf

sprintf

swprintf

fprintf

fwprintf

 

可变参数

固定缓冲区

 

snprintf

swprintf

 

swprintf有两个版本,一个需要指定缓冲区长度一个不需要

固定参数

(va_list)

vprintf

vwprintf

vsnprintf

vswprintf

vfprintf

vfwprintf

vswprintf有两个版本,一个需要指定缓冲区长度一个不需要
posted @ 2023-02-24 11:52  網韻  阅读(107)  评论(0编辑  收藏  举报