標籤:style blog color 2014 art for
實現一個簡化的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;}