首页 > 代码库 > C和指针第七章第五题
C和指针第七章第五题
实现一个简化的printf函数,能够处理%d,%f,%s,%c等格式。
/************************************************************************* > File Name: permutation.c > Created Time: 2014年06月17日 星期二 23时22分34秒 ************************************************************************/#include<stdio.h>#include<stdarg.h>#include<stdlib.h>//输出普通的字符串int printStr(char const *str){ int len = 0; while(*str != ‘\0‘) { putchar(*str++); len++; } return len;}//说明,一个简化的printf函数,这个函数是能够%d,%c,%f,%s等格式。其他格式均是未定义的。int MyPrintf(char const *format,...){ int len = 0; int sublen; va_list vlist; va_start(vlist,format);//获取第一个参数首地址 while(*format != ‘\0‘) { char data[50]; int sublen = 1; if(*format++ == ‘%‘) { if(*format == ‘d‘) { int d = va_arg(vlist,int); char dd[10]; itoa(d,dd,10); sublen = printStr(dd); }else if(*format == ‘c‘) { char c = va_arg(vlist,char); putchar(c); sublen = 1; }else if(*format == ‘s‘) { char *str = va_arg(vlist,char *); sublen = printStr(str); }else if(*format == ‘f‘) { double d = va_arg(vlist,double); char dd[20]; gcvt(d,10,dd); sublen = printStr(dd); } format++; printf("\n"); } len += sublen; } va_end(vlist); return len;}int main(){ int num = MyPrintf("%d %c %s %f",4,‘A‘,"1213",3.14); printf("输出字符的长度(空格,回车符除外):%d\n",num); return 0;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。