首页 > 其他分享 >c语言之各种printf(printf, sprintf, snprintf, swprintf, fprintf, fwprintf, vsprintf, vsnprintf, vswprintf,

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

时间:2023-02-24 12:00:48浏览次数:37  
标签:vsnprintf snprintf swprintf vswprintf printf 缓冲区

一、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有两个版本,一个需要指定缓冲区长度一个不需要

标签:vsnprintf,snprintf,swprintf,vswprintf,printf,缓冲区
From: https://www.cnblogs.com/zuijiuzhou/p/17150537.html

相关文章

  • cout和printf
    cout和printf有什么区别?cout<<是一个函数,cout<<后可以跟不同的类型是因为cout<<已存在针对各种类型数据的重载,所以会自动识别数据的类型。输出过程会首先将输出字符放入......
  • c语言中printf不输出任何东西?,缓冲区未满不输出任何东西
    下面代码为什么没有任何输出:#include<cstdio>#include<unistd.h>intmain(intargc,char**argv){while(1){sleep(1);pri......
  • 【C】printf()和scanf()
    转换说明%a,%A浮点数,十六进制数和p计数法%c单个字符%d十进制数%e,%E浮点数,e记数法%f浮点数,十进制记数法%g,%G根据值自动选择%f或%e。%e格式用指数小......
  • printf的缓冲机制
    printf的缓冲机制参考链接:https://www.cnblogs.com/sinferwu/p/12426410.htmlprintf是C库函数,是对系统调用write的封装,有其特有的缓冲机制。printf函数实际上只是输出到......
  • 【c&c++】C语言snprintf()函数用法
    一、函数原型snprintf(),为函数原型intsnprintf(char*str,size_tsize,constchar*format,...)。二、函数介绍将可变个参数(...)按照format格式化成字符串,然后将其......
  • C语言中的 printf 与 scanf
    相比于其它的编程语言,C语言的输入输出功能非常强大,可以按照各种要求进行输入输出。1.printf的功能主要用于按照用户指定的格式把指定的数据输出到显示器上。1.1.printf......
  • Sword vsprintf自定义实现
    /*vsprintf自定义实现*/#include<stdlib.h>#include<string.h>#include<stdio.h>#include<errno.h>#include<assert.h>#include<stdarg.h>#include<math.......
  • Go Printf 转义字符
    转义字符含义%d十进制整数%x、%o、%b十六进制、八进制、二进制整数%f、%g、%e浮点数:如3.141592、3.141572653589793、3.141593e+00%t布尔型:true或......
  • 嵌入式重新实现printf函数
    voidhal_printf(constvoid*msg,...){staticcharfmt[1024];va_listap;va_start(ap,msg);vsprintf(fmt,(char*)msg,ap);va_end(ap);HAL_U......
  • STM32 UART收发-中断方式接收-重定向printf函数
    STM32UART串口收发与中断方式接收扫描以下二维码,关注公众号​​雍正不秃头​​获取更多STM32资源及干货!环境:1、STM32CubeMX5.32、AtollicTrueSTUDIOforSTM329.3.03......