[i=s] 本帖最后由 stop 于 2009-9-11 02:27 编辑 [/i]
在写程序的过程中,用到了不定长参数的函数,形如fun1(p1,p2...NULL)
想请教一个问题,做一个怎样的转换可以把那个令人讨厌的“NULL”去掉,以免我每次都要写它。
(
因为我在程序中要多次写到,如:
fun1(1,3,5,NULL);
fun1(1,2,3,4,5,6,7,NULL);
fun1(2,1,NULL);
......
)
stop 于 2009-09-12 15:35:25发表:
[i=s] 本帖最后由 stop 于 2009-9-12 20:17 编辑 [/i]
看看这个:
char aa[150];
char *myfile="/tmp/123"
char *x="and";
void writefile(char *s,...)
{
va_list ap;
char * t;
va_start(ap,s);
memset(aa,0,150);
strcpy(aa,s);
while ((t=va_arg(ap, char *)))
strcat(aa,t);
strcat(aa,"\n");
va_end(ap);
fputs(aa,myfile);
}
下面开始调用不需要用NULL吗?
writefile("boys ",x," grils",NULL);
....
writefile("men ",x," women",x,"人妖",NULL);
wang7131984 于 2009-09-12 14:09:58发表:
不需要null的,你真应该好好看看man stdarg,上面有例子。va_list型的变量
stop 于 2009-09-12 13:00:39发表:
我用了stdarg.h。
这个NULL就是stdarg里面带出来的。
我现在就是想把这个去掉,毕竟每次都写个"NULL"是很烦的事情
wang7131984 于 2009-09-11 22:27:43发表:
man stdarg
stop 于 2009-09-11 17:46:00发表:
有人能帮忙解决吗?
写宏可以吗?还是要另外写函数?