1. 程式人生 > >C語言:模擬實現printf函式

C語言:模擬實現printf函式

4.1.模擬實現printf函式,可完成下面的功能
能完成下面函式的呼叫。 
print("s ccc d.\n","hello",'b','i','t',100); 
函式原型: 
print(char *format, ...) 

程式碼如下:

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>

void show(int num)
{
    if (num > 9)
    {
        show(num / 10);
    }
    putchar(num % 10 + '0');
}
void print(char*format,... )
{
    va_list arg;
    va_start(arg, format);
    while (*format)
    {
        switch (*format)
        {
        case 's':
            //字串
        {
                    char *ret = va_arg(arg, char*);
                    //puts(ret);
                    while (*ret)//迴圈列印字元
                    {
                        putchar(*ret);
                        ret++;
                    }
        }
            break;
        case 'd':
            //整形
        {
            int ret = va_arg(arg, int);
            show(ret);//按字元列印
        }
            break;
        case 'c':
            //字元
            putchar(va_arg(arg, char));
            break;
        default:
            putchar(*format);
            break;
        }
        format++;
    }
}

int main()
{
    print("d s c\n", 100, "bit", 'q');
    system("pause");
    return 0;
}