printf、sprintf、snprintf简述
来源:互联网 发布:丽升网络评卷系统 编辑:程序博客网 时间:2024/05/17 23:36
printf
——功能:格式输出,是C语言中产生格式化输出的函数(定义在stdio.h中),用于向终端(显示器、控制台等)输出字符
——原型:int printf(const char *format, ...)
——说明:
%d,%u 十进制有/无符号整数
%x,%X 十六进制无符号整数小/大写
%c,%s 字符型/字符串
%f,%e,%E 浮点数/指数形式表示的浮点数
%g,%G 根据数值不同自动选择%f或%e
%o 八进制无符号整数
%p 指针
——例:
%3d — 输出3位整型数,不足3位右对齐,数字表示最大占宽
%03d — 输出3位整型数,不足3位在前面用“0”补足
%-3d — 输出3位整型数,不足3位左对齐,“-”表示左对齐
%9.2f — 输出9位浮点数,小数2位,整数6位,小数点占一位,不足9位右对齐
%m.ns — n个字符输出在m列范围,不足用空格补位;若n>m,则自动取n值,保证n个字符正常输出
printf("%*.*s", m, n, str) — 两个*分别对应参数m,n,同上
l,h — l对整型指long型,对实型指double型;h用于将整型的格式字符修正为short型
# — 对c、s、d、u类无影响,对o类输出时加前缀0,对x类输出时加前缀0x,对e、g、f类当结果有小数时才给出小数位
%%,\n,\r,\t,\xhh — 百分号/换行/回车/TAB符/一个ASCII码用十六进制表示
sprintf
——功能:字符串格式化命令,把格式化的数据写入某个字符串中
——原型:int sprintf(char *buffer, const char *format, ...)
——说明:注意接收串长度大小,以防缓冲区溢出;其是变参函数,除了前面两个参数外后面的参数都不是类型安全,无法通过格式串得知函数调用前参数压栈时压进的参数类 型,导致参数压栈时可能会做符号扩展;其返回值是函数调用写入缓冲区中的字符数目。
——例:
short s = -1; sprintf(str, "%04X", s); —得到str为“FFFFFFFF”,无法通过格式串得知函数调用前参数压栈时压进的是4字节整数还是2字节短整数,所以采用统一字节的处 理方式,导致参数压栈时做了符号扩展。可改为sprintf(str, "%04X", (unsigned short)s)或定义unsigned short s = -1;
snprintf
——功能:字符串格式化命令,把格式化的数据写入某个字符串中
——原型:int snprintf(char *str, size_t size, const char *format, ...)
——说明:最多从源串拷贝size-1个字符到目标串中,然后再在后面加一个‘\0’;成功返回欲写入的字符串长度,出错则返回负值。
Windows版本下面有类似的_snprintf代替snprintf,但是有区别:
If len < count, then len characters are stored in buffer, a null-terminator is appended, and len is returned.
If len = count, then len characters are stored in buffer, no null-terminator is appended, and len is returned.
If len > count, then count characters are stored in buffer, no null-terminator is appended, and a negative value is returned.
可如下使用:
char sa[256]={0};
int result = _snprintf(sa,sizeof(sa),"%s",sb);
if(result==sizeof(sa) || result<0)
{
printf("warning:sting will be truncated");
sa[sizeof(sa)-1]=0;
}
- printf、sprintf、snprintf简述
- printf, fprintf, sprintf,snprintf 区别
- printf、fprintf、dprintf、sprintf、snprintf、vprintf系列
- printf、sprintf、snprintf深度用法解析
- 三个打印函数printf()/sprintf()/snprintf()区别
- printf/fprintf/sprintf/snprintf输出函数
- printf()、fprintf()、sprintf()、snprintf()的简介
- printf、fprintf、sprintf和snprintf函数
- scanf sscanf fscanf fgets printf sprintf snprintf 等函数
- sprintf、snprintf
- printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - 输出格式转换
- printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - 输出格式转换
- printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - 输出格式转换
- printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - 输出格式转换
- 【C语言天天练(十三)】printf、fprintf、sprintf和snprintf函数
- printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - 输出格式转换函数
- 各种输出函数的比较(printf/fprintf/sprintf/snprintf/vprintf/vfprintf/vsprintf/vsnprintf)
- sprintf()的snprintf()用法
- ios 正则表达式
- Oracle学习基础(二)
- 优化程序性能的几个方法(来自于《深入理解计算机系统》)
- C语言函数的参数和返回值
- 升级到xcode5之后 引用第三方库的时候会出现ARC报错
- printf、sprintf、snprintf简述
- Eclipse变量插件问题
- 网站维护问题及解决方案集合
- 内核模块相关命令:lsmod,depmod,modprob...
- javascript—正则
- Android复习之进度条ProgressBar
- 西藏旅游-纳木错
- C#中的枚举类型,原来有这么多用法
- Zynq Ubuntu下开发(3)