请问函数参数传递的有关问题,多谢

请教函数参数传递的问题,谢谢
程序test.exe如下:

int f_test(char argv2[])
{
return 0;
}
int main(int argc,char* argv[])
{
 调用f_test
 f_test(空格分隔的字符串, 分别作为test函数的数组参数的每个元素);
}

就像和main函数那样。比如,实际创给了argv[] 8个参数
test a bbb 100 4 555 gg

函数f_test如何实现这样的功能呢?
谢谢
------解决方案--------------------
不用分割,本身已经分割好了。
argv[i]就是一个一个的参数。
引用:
程序test.exe如下:

int f_test(char argv2[])
{
return 0;
}
int main(int argc,char* argv[])
{
 调用f_test
 f_test(空格分隔的字符串, 分别作为test函数的数组参数的每个元素);
}

就像和main函数那样。比如,实际创给了argv[] 8个参数
test a bbb 100 4 555 gg

函数f_test如何实现这样的功能呢?
谢谢

------解决方案--------------------
int main(int argc,char* argv[])
main函数不是已经给你写出来了吗?模仿main函数写就好了。
------解决方案--------------------
引用:
Quote: 引用:

int main(int argc,char* argv[])
main函数不是已经给你写出来了吗?模仿main函数写就好了。

不行的吧,貌似可以这样定义,那怎么调用呢?


程序的输入参数可以通过main函数的参数列表接收,然后你就可以这些参数了。main函数第二个参数是char* 的指针数组,而你的 f_test函数是char型数组,这是个区别你得明白,f_test好像实现不了main函数的此项功能。
------解决方案--------------------
仅供参考
#include <stdio.h>
#include <string.h>
char s[]="aa,bb,cc,dd,...";
int argc,i;
char *argv[100];
void main() {
    argc=0;
    argv[argc]=strtok(s,",");
    while (1) {
        if (NULL==argv[argc]) break;
        argc++;
        if (argc>=100) break;
        argv[argc]=strtok(NULL,",");
    }
    for (i=0;i<argc;i++) {
        printf("argv[%d] \"%s\"\n",i,argv[i]);
    }
}
//argv[0] "aa"
//argv[1] "bb"
//argv[2] "cc"
//argv[3] "dd"
//argv[4] "..."

------解决方案--------------------
可以使用va_start和va_end宏。具体用法自己查百度。下面给个例子给你。

/*函数原型声明,至少需要一个确定的参数,注意括号内的省略号*/ 
int demo( char, ... ); 
void main( void ) 

   demo("DEMO", "This", "is", "a", "demo!", ""); 


/*ANSI标准形式的声明方式,括号内的省略号表示可选参数*/ 
int demo( char msg, ... ) 

       /*定义保存函数参数的结构*/
   va_list argp; 
   int argno = 0; 
   char para; 
     /*argp指向传入的第一个可选参数,msg是最后一个确定的参数*/ 
   va_start( argp, msg ); 
   while (1) 
       { 
        para = va_arg( argp, char); 
           if ( strcmp( para, "") == 0 ) 
               break; 
           printf("Parameter #%d is: %s\n", argno, para); 
           argno++; 

va_end( argp ); 
/*将argp置为NULL*/
return 0; 
}
------解决方案--------------------
va_arg, va_end, va_start
Access variable-argument lists.

type va_arg( va_list arg_ptr, type );

void va_end( va_list arg_ptr );

void va_start( va_list arg_ptr );   (UNIX version)

void va_start( va_list arg_ptr, prev_param );   (ANSI version)

Routine Required Header Optional Headers Compatibility 
va_arg <stdio.h> and <stdarg.h> <varargs.h>1 ANSI, Win 95, Win NT 
va_end <stdio.h> and <stdarg.h> <varargs.h>1 ANSI, Win 95, Win NT 
va_start <stdio.h> and <stdarg.h> <varargs.h>1 ANSI, Win 95, Win NT 


1 Required for UNIX V compatibility.

For additional compatibility information, see Compatibility in the Introduction.

Libraries

LIBC.LIB Single thread static library, retail version 
LIBCMT.LIB Multithread static library, retail version 
MSVCRT.LIB Import library for MSVCRT.DLL, retail version