C51中的sprintf()函数使用 目录 一、函数作用 二、输出内容的格式化处理 1.输出变量的类型 2.输出变量的位数 小数: 整数: 16 进制: 在做蓝桥杯第五届国赛试题的时候,遇到这样一个问题:题目要求单片机通过串口返回电脑一组数据,包括温度、湿度、时间等,数据很多问且中间有大括号等符号做间隔,如果一个字符一个字符的分开重新定义,发送的话就非常麻烦。通过上网学习,发现了一个非常有效的办法:sprintf()函数来实现。但是,在C51中的sprintf函数与标准C语言中有所差别,注意区分。经过上网查阅资料,特此总结一下。 首先,用这个函数的时候,前面要加上这个头文件:#include <stdio.h> 一、函数作用 sprintf() 是格式化输出函数,保存字符串到缓冲区中,起到拼接字符串的作用。 函数介绍: int sprintf(char *str, const char *format, …); 参数: str: 数据缓冲区,通常是一个字符串数组 format:输出的内容 举个例子: int a = 10; char buf[100] = {0}; sprintf(buf,”a = %d ”,a); 作用:将a的值放置到%d的位置,然后”a = 10 ”这句话保存到数组buf中。 说明:函数sprintf()的用法和printf()函数一样,只是sprintf()函数给出第一个参数string(一般为字符数组,用来存储字符串),起到拼接字符串的作用。 又例如: sprintf(s, “%d”, 123); //产生”123″ 把整数123 打印成一个字符串保存在s 中。 二、输出内容的格式化处理 对于输出的内容,还要对他进行格式化的处理,也就是上面例子中双引号内的部分。 1.输出变量的类型 b 表示字节数据; bd 表示 8 位有符号整数(256)(KEIL里扩展出了b,h,l来对输入字节宽的设置:b八位(256);h十六位(65535);l三十二位); bu 表示 8 位无符号整数; bx 表示 8 位十六进制整数; 小数用f表示。 2.输出变量的位数 小数: 自己控制打印的宽度和小数位数,这时就应该使用:“%m.nf”格式,其中m表示打印内容的总宽度,字符串长度不足时补空格,超出了则按照实际宽度打印;n表示小数点后的位数,也就是从相应的字符串中最多取用的字符数。比如: 整数: 也是使用:“%m.nf”格式。m.n m:打印内容的总宽度,字符串长度不足时补空格,超出了则对于输出整数:按照实际宽度打印;n: 总共输出几位整数,位数不够在前面加0,超出位数输出原数。 测试结果: 0.2 0.2 0.2 三个变量都是两位数,不够前面加0 0.1 0.2 0.3 {23-59-059} {0-00-000} 第一个一位数,第二个两位数,第三个三位数;不够三位数前面补零;超过一位数输出原数 0.3 0.2 0.1 {023-59-59} {000-00-0} 第一个三位数,第二个两位数,第三个一位数;不够三位数前面补零;超过一位数输出原数 由此可见,n:总共输出几位整数,位数不够在前面加0;超过位数输出原数 2.2 2.2 2.2 {23-59-59} {00-00-00} 三个变量都是两位数,不够前面加0 3.2 3.2 3.2 { 23- 59- 59} { 00- 00- 00} 字符串长度不足时补空格,超出了则按照实际宽度打印 16 进制: 参考: sprintf %m.ns %m.nf_mydriverc2的博客-CSDN博客_sprintf ”%m.nf”
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/62440.html