C和指针第七章第五题

简介:

实现一个简化的printf函数,能够处理%d,%f,%s,%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;
}
复制代码

 










本文转自NewPanderKing51CTO博客,原文链接:http://www.cnblogs.com/newpanderking/p/3830788.html ,如需转载请自行联系原作者

相关文章
|
2月前
|
C语言
学习——理解指针(4)(指针学习最后一节)
学习——理解指针(4)(指针学习最后一节)
|
7月前
|
存储 安全 C++
第六章:C++中的指针和引用
第六章:C++中的指针和引用
43 1
面向对象程序设计实验四:指针、引用与结构体
面向对象程序设计实验四:指针、引用与结构体
面向对象程序设计实验四:指针、引用与结构体
|
存储 C语言
C语言实验十一 指针(一)
C语言实验十一 指针(一)
94 0
|
C语言
C语言实验十二 指针(二)
C语言实验十二 指针(二)
60 0
|
存储 C语言 C++
《C和指针》读书笔记(第六章 指针)
《C和指针》读书笔记(第六章 指针)
|
编译器 C语言 C++
《C和指针》读书笔记(第七章 函数)
《C和指针》读书笔记(第七章 函数)
|
C语言 C++
《C和指针》读书笔记(第八章 数组)(上)
《C和指针》读书笔记(第八章 数组)(上)
|
存储 编译器 C语言
《C和指针》读书笔记(第八章 数组)(下)
《C和指针》读书笔记(第八章 数组)
|
存储 搜索推荐 算法
《C和指针》读书笔记(第十一章 动态内存分配)
《C和指针》读书笔记(第十一章 动态内存分配)