自己实现的printf函数
根据上一篇中的 《可变参数列表(非格式化控制)》,今天继续学习:
自己写一个函数实现printf功能。
1.自己实现的printf函数
#include <stdio.h>
#include <stdarg.h>void my_printf(const char *str,...)
{va_list var;char c = 0;unsigned int ui = 0;int i = 0;float f = 0;double d = 0;char *s = NULL;va_start(var,str);while('\0' != *str){if('%' != *str){printf("%c",*str);str++;continue;}else{switch (*(++str)){case 'c':c = (char)va_arg(var,int);printf("%c",c);break;case 'u':ui = (unsigned int)va_arg(var,int);printf("%u",ui);break;case 'd':i = va_arg(var,int);printf("%i",i);break;case 'f':f = (float)va_arg(var,double);printf("%f",f);break;case 'l':if('f' == *(str + 1)){d = va_arg(var,double);printf("%lf",d);str++;}break;case 's':s = (char*)va_arg(var,char*);printf("%s",s);break;default:printf("%c",*str);break;}str++;}}va_end(var);
}
int main()
{my_printf("");my_printf("11 %%\n");my_printf("22 hello\n");my_printf("33 c=%c,ui=%u,i=%d,f=%f,d=%lf\n",'A',123,-234,3.14,6.66);return 0;
}
简单的测试了下,满足要求,可能还存在问题,以后慢慢优化
自己实现的printf函数相关推荐
- 关于C语言中printf函数“输出歧视”的问题
目录 关于C语言中printf函数"输出歧视"的问题 问题描述 探索问题原因 另一种研究方法 问题结论 关于C语言中printf函数"输出歧视"的问题 问题描述 ...
- c语言自定义char*函数返回值是乱码_[每日C语言」printf()函数的修饰符和返回值...
在上一个小demo<printf()函数(1)>中主要说了一下printf()函数的转换说明符,这些转移说明符是可以被修饰的.我们可以在%d和定义的转义字符之间通过插入修饰符对基本的转换说 ...
- c程序设计语言中printf,编程序 用getchar函数读入两个字符c1和c2,然后分别用putchar和printf函数输出这两个字符。请问...
编程序,用getchar函数读入两个字符给c1和c2,然后分别用putchar和printf函数输出这两个字符.请问: 1. 变量C1,C2应定义为字符型或整型?或二者皆可? 答:在这个题目里,变量C ...
- php 格式化评论量函数,深入剖析PHP中printf()函数格式化使用
printf()函数优点在于可以格式化输出! printf的格式控制的完整格式: % - 0 m.n l或h 格式字符 下面对组成格式说明的各项加以说明: ①%:表示格式说明的起始符号,不可缺少. ② ...
- STM32中关于串口通信的printf()函数重定向问题
在STM32串口通信程序中使用printf()函数发送数据非常方便,但是需要先进行简单的配置,下面介绍两种配置方法. 方法一.对工程属性进行配置 第1步:在main.c中包含"stdio.h ...
- scanf函数和printf函数
C程序实现输出和输入的 主要是printf函数 和 scanf函数,这两个函数是格式输入输出 格式声明由%和格式字符组成 如%d,%f 格式字符: d格式符:用来输出一个有符号的十进制整数 c格式 ...
- C中printf函数的实现原理
一.printf函数的实现原理 在C/C++中,对函数参数的扫描是从后向前的.C/C++的函数参数是通过压入堆栈的方式来给函数传参数的(堆栈是一种先进后出的数据结构),最先压入的参数最后出来,在计算机 ...
- 用宏定义代替printf函数
问题提出 有时候我们想用宏定义来决定是编译debug版本的代码还是release的代码,dubug版本的代码会通过printf打印调试信息,release版本的代码则不会.我们总不能对每一条print ...
- C语言程序设计基础及应用实例---第一节 printf函数的使用
(1)printf函数打印字符串 #include <stdio.h>int main(void) {printf("Helloworld!\r\n");return ...
- PIC中实现printf函数出现:Warning [2066] type qualifier mismatch in assignment
为什么会出现"Warning [2066] type qualifier mismatch in assignment"(警告[2066] 指定的类型限定符不匹配)? 解答: ...
最新文章
- 5G前夜 运营商如何实现网络创新?
- php中的elseif和else if
- MyBatis学习总结(13)——Mybatis查询之resultMap和resultType区别
- PHP修改表格(增删改)
- iphone升级ios7之后出现蓝框框一直跳的问题
- linux sigar 进程监控,Linux 下使用Sigar 获取CPU 使用率
- Python语言程序设计 嵩天
- 读《Redis入门指南》2
- 期货公司开户实力经纪业务的规模
- INSTALL_PARSE_FAILED_NO_CERTIFICATES 解决办法
- 嵌入式 - 瑞萨电子的并购交易
- 计算机考研搜集的资料(408)
- php版工行聚合支付和e支付
- P4043 [AHOI2014/JSOI2014] 上下界最小费用流
- 新的掌舵手已就位,汽车之家这艘船将驶向何方?
- 从富文本(html字符串)中获取图片,js获取富文本中的第一张图片(正则表达式)
- 智慧天下:专业版和绿色版有什么区别?
- EtherCAT简介
- Python生成英文大小写和数字的随机数
- SAP中采购交货时间取值物料主数据或采购协议配置分析测试
热门文章
- 小爱音响服务器升级维护,小米互联网音箱升级“小爱同学”变砖?教你一招满血复活!...
- java 发邮件授权码_javamail - androidmail 发送邮件 各种邮件授权方式
- HTTP服务器远程控制,求关注:远程控制你的打印机,附详细步骤
- 菜鸟教程之工具使用——国际化资源文件开发凶器MultiProperties
- 1.7Eclipse开发工具介绍(2020-12-6)
- Linux驱动emmc的8bits/4bits/1bits模式自动匹配优化
- 链式解决冲突散列表计算asl方法
- Sigrity Power SI提取S参数
- 网络广告VS电子邮件
- 衡量风控策略区分度的三步法