keil C51:printf sprintf vprintf vsprintf 函数学习

在keil安装目录,其中有STDIO.H 其中有几个print函数如下:

extern int printf   (const char *, ...);
extern int sprintf  (char *, const char *, ...);
extern int vprintf  (const char *, char *);
extern int vsprintf (char *, const char *, char *);

vprintf对应printf,将数据以ascii码的形式打印到串口

vsprintf 对应sprintf,将数据以ascii码的形式打印到buffer中。


The sprintf function formats a series of strings and numeric values and stores the resulting string in buffer. 

This function is similar to the printf routine, but it stores the formatted output in buffer rather than sending it to the output stream.

printf的原理是从 “字符指针变量”(单字节指针)开始从串口发送出,如果遇到‘\0’(0x00)就停止发送,注意这个0x00是不会发送的!


buffer[0]=0x00;
buffer[2]=0x00;		//	buffer[2]=0x01; 
TI = 1;
ES = 0;
printf(buffer);
ES = 1;	


这样子是不会发送任何数据的,因为buffer指向的第一个字节的数据是0x00,那么就不会发送数据!

但是如果buffer[0]是一个非0x00的数据,那么就可以送,但是buffer[1]默认没有初始化,所以只发送第一个数据。

所以如果要发送一个数组,其中包括0x00,那么就不能用printf函数。要用一个for循环来发送数据遍历整个数组。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值