编写示例程序,实现printf、sprintf和snprintf函数的功能
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
class Test
{
public:
Test();
~Test();
int myprintf(const char *fmt, ...);
int mysprintf(char *str,const char *fmt, ...);
int mysnprintf(char *str,size_t size,const char *fmt, ...);
};
int main()
{
Test test;
char str[30] = "abcdefg\n ";
char str1[30] = "123456\n";
char str2[30] = "hijklmnn\n";
test.myprintf(str);
test.mysprintf(str,str1);
test.mysnprintf(str1,3,str2);
test.myprintf(str);
test.myprintf(str1);
}
Test::Test()
{
printf("构造函数开始!!!\n");
}
int Test::myprintf(const char *fmt, ...)
{
va_list arg;
va_start(arg,fmt);
vprintf(fmt,arg);
va_end(arg);
return 0;
}
int Test::mysprintf(char *str,const char *fmt, ...)
{
va_list arg;
va_start(arg,fmt);
vsprintf(str,fmt,arg);
va_end(arg);
return 0;
}
int Test::mysnprintf(char *str,size_t size,const char *fmt, ...)
{
va_list arg;
va_start(arg,fmt);
vsnprintf(str,size,fmt,arg);
va_end(arg);
return 0;
}
Test::~Test()
{
printf("析构函数开始!!!\n" );
}
运行结果
构造函数开始!!!
abcdefg
123456
hi析构函数开始!!!
总结
int vprintf(const char *format, va_list ap);
int vfprintf(FILE *stream, const char *format, va_list ap);
int vsprintf(char *str, const char *format, va_list ap);
int vsnprintf(char *str, size_t size, const char *format, va_list ap);
模板
void fun()
{
va_list arg;
va_start(arg,fmt);
va_end(arg);
}