keil C51:printf sprintf vprintf vsprintf 函数学习

来源:互联网 发布:js的二维数组赋值 编辑:程序博客网 时间:2024/05/22 14:04

在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循环来发送数据遍历整个数组。



原创粉丝点击