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函数打印输出到屏幕 ...
随机推荐
- paper 97:异质人脸识别进展的资讯
高新波教授团队异质人脸图像识别研究取得新突破,有望大大降低刑侦过程人力耗费并提高办案效率 近日,西安电子科技大学高新波教授带领的研究团队,在异质人脸图像识别研究领域取得重要进展,其对香 ...
- 禁用链接 <a>
pointer-events Syntax /* Keyword values */ pointer-events: auto; pointer-events: none; pointer-event ...
- Python基础第三篇
一.collections系列 Counter是对字典类型的补充,用于追踪值的出现次数,具备字典的所有功能 + 自己的功能 1.计数器Counter import collections a='aba ...
- jquery 新闻滚动效果
$(function () { var scrollTimer = null; var delay = 2000; //1.鼠标对新闻触发mouseout事件后每2s调用scr ...
- zigbee学习之路(四):按键控制(中断方式)
一.前言 通过上次的学习,我们学习了如何用按键控制led,但是在实际应用中,这种查询方式占用了cpu的时间,如果通过中断控制就可以解决这个问题,我们今天就来学习按键控制的中断方式. 二.原理分析 传统 ...
- Packets(模拟 POJ1017)
Packets Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 47750 Accepted: 16182 Description ...
- “stdafx.h”: No such file or directory
“stdafx.h”: No such file or directory 一般原因是建工程的时候选择了空工程,然后添加现有源文件(含stdafx.cpp) 或者 修改了已有的stdafx.cpp 或 ...
- [问题2014A05] 解答
[问题2014A05] 解答 (1) 将矩阵 \(A\) 分解为两个矩阵的乘积: \[A=\begin{bmatrix} 1 & 1 & \cdots & 1 & 1 ...
- tar等
tar格式,会打包成一个文件,可以对多个目录,或者多个文件进行打包tar命令只是打包,不会压缩,打包前后大小是一样的 tar命令 -c //打包-x //解压-f //指定文件-t //查看 tar ...
- Bootstrap_分页
一.带页码的分页导航 <ul class="pagination"> <li><a href="#">«</a> ...