在說明完基本的 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;
}