#include "stdafx.h"
#include <iostream>
#include <iostream>
#include <stdio.h>
#include <string>
#include <stdlib.h>
#include <cstdarg>
#include <sstream>
using namespace std;
typedef enum {TRUE = 1,FALSE = 0}BOOL;
BOOL LogInfo(const char *Path,const char *format, ... )
{
char szBuffer[1024];
FILE *fp;
va_list v; // v is our argument pointer
fp = fopen(Path,"a");
if(fp == NULL)
return FALSE;
va_start(v,format); //Init v to start with the argument after "format"
vsprintf(szBuffer,format,v);
fprintf(fp,"%s",szBuffer);
fclose( fp);
va_end( v);
return TRUE;
}
void Hello(char* A,...)
{
va_list ap;
va_start(ap,A);
while(1)
{
char *p = va_arg(ap,char*);
if(p == 0) break;
cout<<p;
}
va_end(ap);
}
string MYsprintf (const char *str, ...)
{
char *temp = NULL;
int Temp = 0;
va_list args;
va_start(args, str);
ostringstream output;
for (unsigned int i = 0; i < strlen(str); i++)
{
if (str[i] == '%' && str[i+1] != '%' && i+1 < strlen(str)) // we need to format it
{
switch (str[i+1]) // switch the next character
{
case 's':
temp = va_arg (args, char*);
output << temp;
break;
case 'd':
Temp = va_arg (args, int);
output << Temp;
break;
default:
output << str[i];
}
i++; // increment to avoid outputting the next character
}
else cout << str[i];
}
va_end(args);
return output.str();
}
void main(void)
{
LogInfo( "C://MY.LOG","%s %d/n","FunctionTest",123,35);
Hello("a","bac","%d %d",0);
string mystring = MYsprintf( "YY: %s%d %d %d ","abc",324, 3,3,3);
cout<<mystring;
}