16,472
社区成员
发帖
与我相关
我的任务
分享
void MCString::Format(char * New_Value, ...)
{
//Value是类里的一个公有变量,是 char * 类型
sprintf(Value, New_Value, (va_list)argptr); //不行
//我也这样试验过
//sprintf(Value, New_Value, ...); 也是不行,可能有点不靠谱,呵呵,不过起码尝试过
}
len = _vscprintf( format, args ) + 1;
void MCString::Format(char * New_Value, ...)
{
if(Value!=NULL)
Value = (char *)realloc(Value,1024);
else
Value = (char *)malloc(1024);
va_list ArgList;
va_start(ArgList, New_Value);
vsprintf(Value, New_Value, ArgList);
va_end(ArgList);
LenB = strlen(Value);
}
void MCString::SetValue(char *New_Value)
{
LenB = strlen(New_Value);
if(Value!=NULL)
Value = (char *)realloc(Value,LenB);
else
Value = (char *)malloc(LenB);
sprintf(Value,"%s",New_Value);
}
void MCString::Format(char * New_Value, ...)
{
va_list ArgList;
va_start(ArgList, New_Value);
LenB = strlen(ArgList)+strlen(New_Value);
if(Value!=NULL)
Value = (char *)realloc(Value,LenB);
else
Value = (char *)malloc(LenB);
vsprintf(Value, New_Value, ArgList);
va_end(ArgList);
}
void MCString::Format(char * New_Value, ...)
{
va_list ArgList;
va_start(ArgList, New_Value);
vsprintf(Value, New_Value, ArgList);
va_end(ArgList);
}
DWORD MCString::GetFormatStringSize(char * StringHand, va_list args)
{
DWORD StringCount;
DWORD i;
DWORD j;
char * tempStr;
char StrOver;
StringCount = 0;
i = 0;
tempStr = (char *)malloc(255);
while((int)StrOver!=0){
StrOver = StringHand[i];
i++;
if((int)StrOver==0){
break;
}else if((int)StrOver==0x0025){
StrOver = StringHand[i];
switch(StringHand[i]){
case 'i':
memset(tempStr,0,255);
sprintf(tempStr,"%d",va_arg(args,int));
j = 0;
while((int)tempStr[j]!=0){
j++;
}
StringCount += j;
break;
case 'd':
memset(tempStr,0,255);
sprintf(tempStr,"%d",va_arg(args,long));
j = 0;
while((int)tempStr[j]!=0){
j++;
}
StringCount += j;
break;
case 'f':
memset(tempStr,0,255);
sprintf(tempStr,"%f",va_arg(args,double));
j = 0;
while((int)tempStr[j]!=0){
j++;
}
StringCount += j;
break;
case 's':
StringCount += strlen(va_arg(args,char *));
break;
case 'c':
StringCount++;
break;
}
i++;
}else if((int)StrOver==0x005C){
i++;
StringCount++;
}else{
StringCount++;
}
}
return StringCount;
}