红联Linux门户
Linux帮助

参数不定长的函数问题

发布时间:2009-09-11 02:25:13来源:红联作者:stop
[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);
......
文章评论

共有 5 条评论

  1. 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);

  2. wang7131984 于 2009-09-12 14:09:58发表:

    不需要null的,你真应该好好看看man stdarg,上面有例子。va_list型的变量

  3. stop 于 2009-09-12 13:00:39发表:

    我用了stdarg.h。
    这个NULL就是stdarg里面带出来的。

    我现在就是想把这个去掉,毕竟每次都写个"NULL"是很烦的事情

  4. wang7131984 于 2009-09-11 22:27:43发表:

    man stdarg

  5. stop 于 2009-09-11 17:46:00发表:

    有人能帮忙解决吗?
    写宏可以吗?还是要另外写函数?