欢迎来到天天文库
浏览记录
ID:9092120
大小:144.50 KB
页数:21页
时间:2018-04-17
《纯手动的c语言格式化输出函数》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、纯手动的C语言格式化输出函数分类: C/C++作者:maozefa摘自:CSDN技术Blog链接地址:http://www.cnblogs.com/maozefaprintf系列函数,包括fprintf、sprintf函数等,其功能是将C语言的所有基本数据类型按用户要求进行格式化输出。 printf函数几乎是所有学习C语言的人接触到的第一个函数,是C语言标准中使用频率最高的函数。 printf函数是C语言标准函数中最著名的可变参数函数,看见printf这个函数名,就想起了C语言的说法一点也不过分,因此,可以说是C语言标准函数中的最具标志性的函数。 printf系列函数。在DOS环境
2、下,这一系列输出函数涵盖了PC机所能用到的所有输出设备,所以printf系列函数也是C语言中最复杂的函数。 当然,随着DOS时代的结束,不仅printf系列函数的作用减弱了,就连C语言本身也被压缩到了最小的应用领域。 本文写的sprintfA函数,也是应一个小友要求写的几个函数之一,包括我昨天发布的《自己动手写C语言浮点数转换字符串函数》中的FloatToStr函数,是用来学习用的。之所以取名为sprintfA,不仅是区别系统本身的sprintf函数,同时也因为在Windows下,A表示的是传统的ANSI函数。因为在Windows下,printf系列函数也“与时俱进”了,如wpri
3、ntf等就是在宽字符环境下的输出函数。由于我在sprintfA函数中使用了Windows的宽字符转换函数,因此该函数只适用于Windows环境。 由于sprintfA函数代码比较长,将分为多篇文章发布,《自己动手写C语言浮点数转换字符串函数》一文中的代码也应算作一篇: 一、数据定义:viewplainprint?1.typedef struct 2.{ 3. INT type; // 数据长度类型 4. INT width; // 数据最小宽度 5. INT precision; // 数据精度 6. BOOL left;
4、 // 是否居左 7. BOOL zero; // 是否前导零 8. INT decimals; // 浮点数: 1强制小数位; 16进制: -1: 0x, 1: 0X 9. INT negative; // 符号:-1: '-'; 1: '+' 10. LPSTR param; // 参数指针 11.}FormatRec; 12. 13.typedef long long LLONG, *PLLONG; 14.typedef unsigned long long ULLONG, *PULLONG
5、; 1. 2.#define TYPE_CHAR 0 3.#define TYPE_SHORT 1 4.#define TYPE_GENERAL 2 5.#define TYPE_LONG 3 6.#define TYPE_LLONG 4 7. 8.#define PTR_SIZE sizeof(VOID*) 9.#define TypeSize(size) (((size + PTR_SIZE - 1) / PTR_SIZE) * PTR_SIZE) 10. 11.#define TS_PTR
6、 PTR_SIZE 12.#define TS_CHAR TypeSize(sizeof(CHAR)) 13.#define TS_WCHAR TypeSize(sizeof(WCHAR)) 14.#define TS_SHORT TypeSize(sizeof(SHORT)) 15.#define TS_INT TypeSize(sizeof(INT)) 16.#define TS_LONG TypeSize(sizeof(LONG)) 17.#define TS_LLONG
7、 TypeSize(sizeof(LLONG)) 18.#define TS_FLOAT TypeSize(sizeof(FLOAT)) 19.#define TS_DOUBLE TypeSize(sizeof(double)) 20.#define TS_EXTENDED TypeSize(sizeof(EXTENDED)) 21. 22.#define CHAR_SPACE
此文档下载收益归作者所有