close

在說明完基本的 va_arg, va_start, va_end 之 malloc 之後,
接下來的實作就是用 foo 函式,去模擬 printf 的功能...
雖然 printf 在 C 語言裡面已經有了
但在 C++ 如果有心還要自己再寫一個 string class,
會使用這個技巧可是大有幫助的唷!!

// ==================================
// FileName: arg_print.cpp
// Author:   Edison.Shih.
// Complier: VC 6.0

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

char Buffer[300];
// ==================================
void foo(char* char_ptr, ...)
{
        va_list list_ptr;
        va_start(list_ptr, char_ptr);
        vsprintf(Buffer, char_ptr, list_ptr);
        va_end(list_ptr);

        printf("%s",Buffer);
}

// ==================================
// main function
int main(int argc, char **argv)
{
        const int INT = 10;
        const char* String = "Edison.Shih.";
        const unsigned Unsigned = 0x20;
        const char Char = 'C';

        foo(" INT = %d\n String = %s\n Unsigned = %x\n Char = %c\n",
                INT, String, Unsigned, C);

        return 0;
}

arrow
arrow
    全站熱搜

    Edison 發表在 痞客邦 留言(0) 人氣()