我具有以下對在C可變長度的參數函數的問題:功能的可變長度的參數
案例1(工程)
myPrintf("%d %s", 24, "Hi There");
案例2(工程)
char tempbuf[9]="Hi There";`
myPrintf("%s %d", tempbuf, 24)
案例3(不起作用)
myPrintf("%s %d", "Hi There", 24)
有沒有人有任何想法爲什麼情況3不起作用。我可以看到str = va_arg(ap, char *);
返回24
這種情況下實際字符串intead。
代碼myPrintf: (這是沒有充分發揮作用,雖然)
void myPrintf(char *fmt, ...)
{
int i,j,val,len;
char *str;
int len2;
va_list ap;
char tempBuf[128];
len=strlen(fmt);
memset(tempBuf,0,MAX_MSZ_LEN);
va_start(ap,fmt);
for(i=0; i<len; i++)
{
switch(fmt[i])
{
case '%' :
i++;
if(fmt[i] == 's')
{
str = va_arg(ap, char *);
strcat(tempBuf, str);
}
else
if(fmt[i]=='i' || fmt[i]=='d')
{
val=va_arg(ap,int);
sprintf(str,"%d",val);
strcat(tempBuf, str);
}
default :
len2=strlen(tempBuf);
tempBuf[len2]=fmt[i];
}
}
va_end(ap);
}
}
什麼的'myPrintf()'的代碼? – 2011-05-24 15:57:17
我們需要查看'myPrintf'的代碼才能提供很多幫助 - 它看起來像一個合理的代碼片段。 – 2011-05-24 15:57:46
你有沒有myprintf的任何代碼? – 2011-05-24 15:57:51