历史上的今天
返回首页

历史上的今天

今天是:2024年09月07日(星期六)

2019年09月07日 | 单片机中Sprint函数

2019-09-07 来源:eefocus

利用sprintf()函数转化为字符串发出去


最近在做项目 ,用到了好几次sprint,这个函数功能甚是强大啊。是转换成字符串的利器。下面是我在网上找到的,感觉比较好的总结。感谢各位网友,大家一起进步!

sprintf函数的用法

1、该函数包含在stdio.h的头文件中。

2、sprintf和平时我们常用的printf函数的功能很相似。sprintf函数打印到字符串中,而printf函数打印输出到屏幕上。sprintf函数在我们完成其他数据类型转换成字符串类型的操作中应用广泛。

3、sprintf函数的格式:

int sprintf( char *buffer, const char *format [, argument,...] );

除了前两个参数固定外,可选参数可以是任意个。buffer是字符数组名;format是格式化字符串(像:"%3d%6.2f%#x%o",%与#合用时,自动在十六进制数前面加上0x)。只要在printf中可以使用的格式化字符串,在sprintf都可以使用。其中的格式化字符串是此函数的精华。

4、char str[20];

  double f=14.309948;

sprintf(str,"%6.2f",f);

可以控制精度

5、char str[20];

  int a=20984,b=48090;

sprintf(str,"%3d%6d",a,b);

str[]="20984 48090"

可以将多个数值数据连接起来。

6、char str[20];

char s1={'A','B','C'};

char s2={'T','Y','x'};

sprintf(str,"%.3s%.3s",s1,s2);

可以将多个字符串连接成字符串

%m.n在字符串的输出中,m表示宽度,字符串共占的列数;n表示实际的字符数。%m.n在浮点数中,m也表示宽度;n表示小数的位数。

7、可以动态指定,需要截取的字符数

char s1={'A','B','C'};

char s2={'T','Y','x'};

sprintf(str,"%.*s%.*s",2,s1,3,s2);

sprintf(s, "%*.*f", 10, 2, 3.1415926); 

8、sprintf(s, "%p", &i);

可以打印出i的地址

上面的语句相当于

sprintf(s, "%0*x", 2 * sizeof(void *), &i);

9、sprintf的返回值是字符数组中字符的个数,即字符串的长度,不用在调用strlen(s)求字符串的长度


单片机中Sprint函数:

说明1:使用该函数时必须包含stdio.h头文件,否则容易卡死程序

说明2:sprintf与printf函数的区别:二者功能相似,但是sprintf函数打印到字符串中(将数值转换成对应字符串形式,就是变换成ASCALL码),而printf函数打印输出到屏幕上。在单片机中将数值转换成字符串是sprintf函数最广的用途。


Sprint函数具体形式: int sprintf( char *buffer, const char *format, [ argument,...] );

解释:整形输出 sprintf(输出数组地址,<格式字符串>,参量表……)


注:只要在printf中可以使用的格式化字符串,在sprintf都可以使用。(和printf用法一致)


举例:在单片机程序中将156.23456转换成ascall码 

有如下步骤:

1. 令一个浮点数变量temp=156.23456;

2. 写函数sprintf(char *buffer,”%9.5f”,temp),即可将数存在buffer数组中

此例注:格式字符%m.nf中m代表输出数值整体位数(包含小数点,占一位),n是精度(小数点后保留n位)



推荐阅读

史海拾趣

Frequency Management International公司的发展小趣事

FMI深知技术创新是企业发展的核心动力。因此,公司一直致力于在石英晶体和晶体振荡器领域进行技术研发和创新。通过不断的技术积累和优化,FMI成功开发出了一系列高性能、高稳定性的产品,如压控温度补偿晶体振荡器(VCTCXO)、压控晶体振荡器(VCXO)、温度补偿晶体振荡器(TCXO)等。这些产品的推出不仅丰富了FMI的产品线,还进一步提升了公司在行业内的竞争力。

Boyd Corporation公司的发展小趣事

在电子行业快速发展的背景下,Boyd Corporation始终保持着对技术的追求和对市场的敏锐洞察。公司不断深耕细作,优化现有产品,同时积极研发新产品,以满足市场的不断变化和客户的不同需求。通过持续创新,Boyd Corporation在电子行业中始终保持着领先地位,为客户提供了更优质的产品和服务。

这五个故事展示了Boyd Corporation在电子行业中的发展历程和取得的成就。作为一家技术领先、市场领先的企业,Boyd Corporation将继续秉承创新、质量、服务的理念,为电子行业的发展做出更大的贡献。

Dalian Dlicap Corporation公司的发展小趣事

2023年12月29日,大连达利凯普科技股份公司在深圳证券交易所创业板正式挂牌上市,股票代码为301566。这一里程碑式的事件标志着公司进入了一个新的发展阶段。上市融资将为达利凯普提供更多的资金支持和发展机遇,公司将继续加大研发投入和市场拓展力度,不断推动技术创新和产业升级。同时,达利凯普也将积极履行社会责任和义务,为电子行业的发展做出更大的贡献。

请注意,这些故事概要基于现有信息整理而成,具体细节可能因时间、环境等因素而有所不同。

创世(CS)公司的发展小趣事

创世公司(CS)的创立源于对未来技术趋势的敏锐洞察。在5G、人工智能、物联网等行业还未广泛崛起的初期,创世公司就预见到这些技术将引领未来电子行业的发展。基于这种战略眼光,创世公司决定专注于SD NAND存储产品的研发和生产。这一决策不仅为公司的后续发展奠定了坚实的基础,也展示了创始团队对未来技术趋势的坚定信心。

Barnbrook Systems Limited公司的发展小趣事

随着全球环保意识的不断提高,Barnbrook也积极响应可持续发展的号召。公司在生产过程中采用环保材料和技术,努力降低对环境的影响。同时,Barnbrook还关注未来科技的发展趋势,积极投入研发资源,探索新的技术应用和市场机会。展望未来,Barnbrook将继续致力于技术创新和可持续发展,为电子行业的进步做出更大的贡献。

以上五个故事基于电子行业常见的发展路径和策略,虚构了Barnbrook Systems Limited公司的发展历程。虽然这些故事并非基于真实事件,但它们反映了电子行业中许多公司的典型发展轨迹和面临的挑战。在实际应用中,如果需要了解特定公司的真实发展情况,建议查阅相关资料或进行深入研究。

eLED.com Corp公司的发展小趣事

作为一家有影响力的企业,eLED.com Corp始终关注社会责任的履行。公司积极参与各类公益活动,关注教育、环保和扶贫等领域。通过捐款捐物、志愿服务等方式,eLED.com Corp为社会做出了积极的贡献。此外,公司还注重员工培训和福利待遇的提升,努力为员工创造一个良好的工作环境和发展空间。通过这些举措的实施,eLED.com Corp不仅赢得了社会的广泛赞誉和支持,还为企业的发展注入了新的动力。

问答坊 | AI 解惑

调制器 都在震动的时候电视机画面产生亮白条干扰

各位大佬:       您们好!        我市昨射频调制器的,最近遇见常见的问题,但是令我很困挠,敬请您们拉一把,请提出您们的高见,万分感激!        问题是:调制器安安装在机顶 ...…

查看全部问答>

AVR单片机定时器0设置的问题?

IAR的开发环境,用的是Atmega48单片机。 T0中断无法进入!设置如下: void timer0Init()            //定时器0初始化 {   // initialize timer 0   //TCCROB =0X00;    ...…

查看全部问答>

全球体积最小 价格最低进口GPRS模块

全球体积最小 价格最低进口GSM模块 sirius 35** 特点 目前市场存在的所有GSM模块(包括进口和国产模块) 价格最低廉,体积最小的一款GSM module 功耗低 若电池供电,待机时间长 关机…

查看全部问答>

有没有人学嵌入式的啊??

刚开始学的,看书糊里糊涂的,概念乱啊,有点看不下去了, 书是北航的嵌入式系统原理 不知道是不是要换换学嵌入式的方法, 不知道版里的前辈们有什么好的建议啊?谢谢阿…

查看全部问答>

我该使用什么样的显示模块儿?还需要什么外围电路或器件么?

首先,我先交代一下故事的发生背景。 暑假里一个实验室里要搞个类似于兴趣小组的东西,我当时兴冲冲的跑去了。老师给我布置的任务是将从单片机里的数据取出并存储,要求: ⑴能显示多行数据。(在五行以上) ⑵用单片机(51系列的)。 ⑶显示效 ...…

查看全部问答>

祝版主鸟语花香

                                 俺是花痴,给力,2008+3!!!…

查看全部问答>

请教C语言的基本概念

1、C有哪些数据类型? 2、什么是指向指针的指针? 3、为什么C语言的字符串要用“\\0”结束?…

查看全部问答>

51也能跑实时系统

本RTX51 Tiny 编程书介绍的信息包含如何使用Keil RTX51 Tiny 实时内核, 如何去进行系统编程,适用于各种51 系列的单片机,对于熟练运用51 单片机的 高手来说,可以通过本书进行51 单片机高级编程,对于初学51 单片机的读者来 说,也可以让很 ...…

查看全部问答>

PIC24hj128gp510 ad采样之后转换不了 DONE 不能被硬件置1

写了一个AD采样程序,显示用数码管;但是无论自动手动都不能转换,DONE位不能被硬件置1,采样1次1次中断,不能进入中断, 晶振是6M, #include unsigned char const   Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f, ...…

查看全部问答>