比如我现在有个函数void print(char* value,...)
代码为:
#include <stdio.h>
#include <stdarg.h>
void print(char* value,...)
{
printf(value);
va_list val;
va_start(val,value);
va_arg(val,char*);
printf(val);
va_end(val);
}
编译后输出不正确
为什么?
è¿ä¸ªçä½ æ¯æä¹è°ç¨ç
ä¸è¬é½æ¯çº¦å®ä¸ªæ° æè æ ¹æ®ç¬¬ä¸ä¸ªåæ°ï¼å³å®ä¸ªæ°ã
ä½ è¿ä¸ªåæ³ï¼çèµ·æ¥æ¯ä¸¤ä¸ªåæ°è°ç¨ï¼ç¶åé½æ¯char* å¦ææ¯è¿æ ·
è¦æ¹æ
#include <stdio.h>#include <stdarg.h>
void print(char* value,...)
{
char *t;
printf(value);
va_list val;
va_start(val,value);
t=va_arg(val,char*);//è·åä¸ä¸ä¸ªåæ°éè¦èµå¼çã
printf(t);
va_end(val);
}追é®
æå°±æ¯æ³é®å¦ä½ç¥éææåæ°é½è·åäºæ²¡æï¼åªè·åä¸æ¬¡ä¸æ¯åªè½è·åå°ç¬¬ä¸ä¸ªå¯ååæ°å
追çæ¯çï¼å°è±¡ä¸æ¯æ²¡æ³ç¥éåæ°ä¸ªæ°ç
åªè½é 约å®
ï¼åprintfï¼æ¯é æ ¼å¼å符串确认个æ°
ä½ å¯ä»¥å¤ä¼ ä¸ä¸ªåæ°ï¼è¡¨ç¤ºä¸ªæ°