stdio库中的printf的函数原型:
int printf( const char *format, … ); // 函数的返回值为int, 表示正确输出的参数个数;
const char * frm
frm指针指向的内容为常量,不可以更改
char * const frm
frm的地址为常量不可更改,指向的内容可更改;
简版printf函数 实现思路
借助putchar函数,实现从0到1 的转变.学习重要的是学习思维
-
my_printf函数代码
#include <stdio.h> int my_printf(const char *frm, ...){ int cnt = 0; #define PUTC(a) putchar(a),++cnt for (int i = 0; frm[i]; i++) { //字符串末尾隐藏'\0',ASCII为0; // putchar(frm[i]), cnt++; PUTC(frm[i]); } return cnt;//cnt代表成功打印字符的个数; }-
完成第一个工能,可以打印字符串了
功能完善改进
- 变量值的解析(如何根据格式控制符和变参打印)
int my_printf(const char *frm, ...){ int cnt = 0; va_list arg; va_start(arg, frm);//用va宏去取参数 #define PUTC(a) putchar(a),++cnt for (int i = 0; frm[i]; i++) { //字符串末尾隐藏'\0',ASCII为0; // putchar(frm[i]), cnt++; PUTC(frm[i]); } #undef PUTC va_end(arg);//废品回收 return cnt;//cnt代表成功打印字符的个数; }-
首先利用va可以获得后面变参列表的参数
-
然后我们对frm里面的字符进行判断
#include <stdarg.h> int my_printf(const char *frm, ...){ int cnt = 0; va_list arg; va_start(arg, frm);//用va宏去取参数 #define PUTC(a) putchar(a), +cnt for (int i = 0; frm
-

本文介绍了如何在C语言中实现一个简单的printf函数。通过分析stdio库中的printf函数原型,借助putchar函数逐步实现字符串输出及数值打印功能。文章讨论了在处理不同数值类型时可能遇到的问题,如负数和整数溢出,并提出了解决方案。
最低0.47元/天 解锁文章

5904

被折叠的 条评论
为什么被折叠?



