首页 > 代码库 > 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;}