实例6---程序调试助手printf-----程序目的:如何利用标准库实现printf函数
printf函数称为格式输出函数,其关键字最末一个字母f即为“格式”(format)之意。其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。
printf(“格式控制字符串”, 输出表列)
其中格式控制字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如:
%d 十进制有符号整数
%u 十进制无符号整数
%f 浮点数
%s 字符串
%c 单个字符
%p 指针的值
%e 指数形式的浮点数
%x或者%X 无符号以十六进制表示的整数,小写则输出小写,大写则输出大写
%o 无符号以八进制表示的整数
%g 自动选择合适的表示法
%p 输出地址符
如果这个是在VC环境下,printf就可以直接使用。那在MSP430的平台下如何实现,下面我们就来编写程序,首先确定的就是printf我们调用的是IAR环境下的标准库函数,那么我们只要写个底层就可以了,也是就我们写个putchar函数即可,不了解putchar函数的同学自己问下度娘,putchar函数如下:
//向终端输出一个字符
int putchar(int c)
{
if(c == '\n')
{
UCA0TXBUF = '\r';
while(!(IFG2 & UCA0TXIFG));
}
UCA0TXBUF = c;
while(!(IFG2 & UCA0TXIFG));
return c;
}
注意形式参数与函数类型都是int型,不要更改这个数据类型,否则不兼容。这个我们可以看下printf的声明
__EFF_NW1 __PRINTFPR __ATTRIBUTES int printf(const char *_Restrict, ...);