天天看点

变参函数

#include "stdafx.h"

#include <stdarg.h>

int Myprintf(char* format,...)

{

va_list ap;

va_start(ap, format);

int n = vprintf(format, ap);

va_end(ap);

return n;

}

int Mysprintf(char* buffer, char* format,...)

int n = vsprintf(buffer,format,ap);

void subfunc (char *fmt, va_list argp)

while (fmt != NULL)

//char* arg = va_arg (argp,char*); /* 从argp中逐一取出所要的参数 */

switch (*fmt)

case 's':

char* pTmp = (char*) va_arg(argp, char*);

printf("Printing a string: %s/n", (char*) va_arg(argp, char*));

break;

//case 'c':

// printf("Printing a char: %c/n", (char) va_arg(argp, int));

// break;

//case 'd':

// printf("Printing a integer: %d/n", (int) va_arg(argp, int));

default:

fmt++;

void mainfunc (char *fmt, ...)

va_list argp;

va_start (argp, fmt); /* 将可变长参数转换为va_list */

subfunc (fmt, argp); /* 将va_list传递给子函数 */

va_end (argp);

int _tmain(int argc, _TCHAR* argv[])

int n = 2010;

//Myprintf("hello world!--%d",2010);

char* pName = "xmj";

char szCopy[20];

Mysprintf(szCopy,"hello world!--%s",pName);

//mainfunc("hello world!--%s",pName);

return 0;

继续阅读