sprintf函数
sprintf函数用法举例
#include<stdio.h>
int main()
{
//1.连接字符串
char a1[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
char a2[] = {'H', 'I', 'J', 'K', 'L', 'M', 'N'};
char buffer[];
sprintf(buffer, "%.*s%.*s\n", sizeof(a1), a1, sizeof(a2), a2); printf("%s\n", buffer); //2.data and place them in the string named buffer.(使用sprintf将各种数据格式化后置于字符数组buffer中)
char str[] = "computer", c = 'L';
int i = , j;
float fp = 1.7320534f;
//格式化并打印各种数据到buffer
j = sprintf(buffer, "String:%s", str);
j += sprintf(buffer + j, "Character:%c", c);
j += sprintf(buffer + j, "Integer:%d", i);
j += sprintf(buffer + j, "Real:%f", fp); //sprintf返回被写入buffer的字节数j
//Note:sprintf is deprecated; consider using sprintf_s instead
printf("Output:\n%s\ncharacter count = %d\n\n", buffer, j); //结束字符‘\0’不计入内 //3.格式化数字字符串(大多数场合可以替代itoa函数)
short m = -; int n = ;
sprintf(buffer, "%-4d%4d", , ); printf("%s\n", buffer);//产生"123 4567"其中123左对齐
sprintf(buffer, "%08x", ); printf("%s\n", buffer); //产生:"000011D7",小写16进制,宽度占8个位置,左边补0 的等宽格式
sprintf(buffer, "%#04X", (unsigned short)m); printf("%s\n", buffer);//sprintf是个变参函数,除了前面两个参数之外,后面的参数要保证类型安全
sprintf(buffer, "%.2f", (double)n); printf("%s\n", buffer); //同上
return ;
}
分析:
1.(1)类比打印浮点数的"%m.nf",m 表示占用宽度(字符串长度不足时补空格,超出了则按照实际宽度打印),n表示从相应的字符串中最多取用的字符数,当然也可以前后都只取部分字符。
(2)如果希望这些格式控制符中指定长度的信息数字是动态的,而不是静态指定的(许多时候程序要到运行时才清楚到底需要取字符数组中的几个字符),而sprintf采用"*"来占用一个本来需要一个指定宽度或精度的常数数字的位置,而实际的宽度或精度可以和其它被打印的变量一样被提供出来。
3.如果m不进行强制转换,那么函数没有办法仅仅通过一个"%X"得知当初函数调用前参数压栈时被压进来的到底是个4 字节的整型数还是个2 字节的短整型数,则采取统一4字节的处理方式,导致参数压栈时符号扩展成32位的整数-1,由于打印时4个位置不够,会把32位整数-1的8位16进制都打印出来。
本文参考链接:
sprintf函数的更多相关文章
- php sprintf 函数的用法
sprintf() 函数把格式化的字符串写入变量中. arg1.arg2.++ 参数将被插入到主字符串中的百分号(%)符号处.该函数是逐步执行的.在第一个 % 符号处,插入 arg1,在第二个 % 符 ...
- sprintf()函数的用法
Visual C++ sprintf()函数用法 转:http://blog.csdn.net/masikkk/article/details/5634886 在将各种类型的数据构造成字符串时,spr ...
- arduino上使用sprintf()函数输出float值出错
如果尝试使用sprintf()函数在arduino上进行对float指转换为一个字符串的话,你会发现,it doesn't work.弄了很久,还以为是没学c++的原因.其实在arduino上,这个函 ...
- sprintf函数php的详细使用方法
PHP sprintf() 函数 先说下为什么要写这个函数的前言,这个是我在微信二次开发的一个token验证文档也就是示例文档看到的一个函数,当时非常不理解,于是查了百度,但是很多结果都很笼统,结果也 ...
- [转]PHP echo, print, printf, sprintf函数的区别和使用
1. echo函数: 输出函数,是命令,不能返回值.echo后面可以跟很多个参数,之间用分号隔开,如: echo $myvar1; echo 1,2,$myvar,"<b>bol ...
- 转:Visual C++ sprintf()函数用法
将字串格式化命令.sprintf 是个变参函数,使用时经常出问题,而且只要出问题通常就是能导致程序崩溃的内存访 问错误,但好在由sprintf 误用导致的问题虽然严重,却很容易找出,无非就是那么几种情 ...
- C++中对sprintf()函数的说明(转)
在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望.由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出 ...
- PHP echo, print, printf, sprintf函数的区别和使用
1. echo函数: 输出函数,是命令,不能返回值.echo后面可以跟很多个参数,之间用分号隔开,如: echo $myvar1; echo 1,2,$myvar,"<b>bol ...
- C语言中sprintf()函数的用法
sprintf函数的用法 1.该函数包含在stdio.h的头文件中. 2.sprintf和平时我们常用的printf函数的功能很相似.sprintf函数打印到字符串中,而printf函数打印输出到屏幕 ...
随机推荐
- URL、URI和URN三者之间的区别
URI 统一资源标识符 Uniform Resource Identifier URL 统一资源定位符 Uniform Resource Locator URN 统一资源 ...
- Writing Your Own jQuery Plugins
Setting Up <script src="js/jquery-1.9.1.min.js"></script> <script src=" ...
- CentOS配置SSH免密码登录后,仍提示输入密码
CentOS配置SSH无密码登录需要3步: 生成公钥和私钥 导入公钥到认证文件,更改权限 测试 1.生成公钥和私钥 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 默 ...
- xcode 中 的工程模板
基于视图的应用程序(view-based application) 应用程序如果仅使用一个视图,应该使用这个模板.一个简单的视图控制器会管理应用程序的主视图,而界面布置则使用一个Interface B ...
- Flyer(二分 HDU4768)
Flyer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- 【转】malloc与free的底层实现
本文转自:http://blog.163.com/xychenbaihu@yeah/blog/static/132229655201210975312473/ 如何查看进程发生缺页中断的次数? 用ps ...
- noi 4982 踩方格
题目链接:http://noi.openjudge.cn/ch0206/4982/ 深搜很好写. DP:O(n) d[i] 为走 I 不的方案数, l[i],r[i],u[i]为第一步走 左,右,上, ...
- Hibernate的关联映射——单向N-1关联
Hibernate的关联映射--单向N-1关联 N-1是非常常见的关联关系,最常见的父子关系也是N-1关联,单向的N-1关联只需从N的一端可以访问1的一端. 为了让两个持久化类能够支持这种关联映射,程 ...
- My97日期控件 选择日期区间
<script language="javascript" type="text/javascript" src="My97DatePicker ...
- python的ujson与simplejson
一.使用了simplejson import simplejson as json 二.使用ujson import ujson as json 参考链接:下载win下的:ujson