用C语言的可变参函数实现一个简单的printf函数

来源:互联网 发布:java 读取cad文件 dwg 编辑:程序博客网 时间:2024/06/04 19:09

文章出处:http://www.cnblogs.com/phinecos/archive/2007/08/24/868524.html


#include "stdio.h"#include "stdlib.h"#include <stdarg.h>void myprintf(char* fmt, )        //一个简单的类似于printf的实现,//参数必须都是int 类型{    //char* pArg=NULL;               //等价于原来的va_list    va_list pArg;    char c;      // pArg = (char*) &fmt;          //注意不要写成p = fmt !!因为这里要对参数取址,而不是取值  // pArg += sizeof(fmt);         //等价于原来的va_start             va_start(pArg,fmt);    do    {        c =*fmt;        if (c != '%')        {            putchar(c);            //照原样输出字符        }        else        {//按格式字符输出数据            switch(*++fmt)            {            case 'd':                printf("%d",*((int*)pArg));                           break;            case 'x':                printf("%#x",*((int*)pArg));                break;            case 'f':                printf("%f",*((float*)pArg));            default:                break;            }            //pArg += sizeof(int);               //等价于原来的va_arg            va_arg(pArg,int);        }        ++fmt;    }while (*fmt != '\0');    //pArg = NULL;                               //等价于va_end    va_end(pArg);    return;}int main(int argc, char* argv[]){    int i = 1234;    int j = 5678;       myprintf("the first test:i=%d",i,j);    myprintf("the secend test:i=%f; %x;j=%d;",i,0xabcd,j);    system("pause");    return 0;}


0 0
原创粉丝点击