在C中传递字符串指针数组

时间:2018-06-03 21:19:17

标签: c arrays parameter-passing

我有一个简单的C函数,我想传递一个指向各种字符串的指针数组。我遇到了编译器在我的函数调用参数上咆哮的问题。这是我正在做的事情的简单表示,

myfunction.h

int myServices(int, char *[]);

myfunction.c

#include <myfunction.h>
int myService(int value, char *strpointer[]) {

   ***

}

mainroutine.c

#include <myfuntion.h>
void main () {

   // Initialize Parameters
   int result;
   int stringcnt;
   char string1[8] = "-st";
   char string2[8] = "-ir";
   char * stringptr[10];

   // Initialize stringptr
   stringptr[0] = string1;
   stringptr[1] = string2;
   stringcnt = 2;

   // Call Service
   result = myService(stringcnt, stringptr); <== gcc issue with stringptr

}

C编译器一直给我“无效使用成员(你在myService调用中忘记了'&amp;'?”和stringptr。我在myService调用中尝试了'&amp;'和'*'和stringptr在主要的例程中没有运气。任何想法。

1 个答案:

答案 0 :(得分:2)

我运行你的代码并注意到一些事情:首先在你的头文件中你没有正确定义参数(缺少昏迷的情况),同样你的主入口点没有正确的返回类型(需要是int)也不是参数(int argc,char * argv [])。我做了改动并将它们附在下面:

 // func.h

int myService(int, char*[]);

然后是功能代码:

// func.c

#include "func.h"

int myService(int value, char *strpointer[]) {
        // your code here
        return 0;
}



// prog.c

-

#include "func.h"

int main (int argc, char *argv[]) {

   // Initialize Parameters
   int result;
   int stringcnt;
   char string1[8] = "-st";
   char string2[8] = "-ir";
   char * stringptr[10];

   // Initialize stringptr
   stringptr[0] = string1;
   stringptr[1] = string2;
   stringcnt = 2;

   // Call Service
   result = myService(stringcnt, stringptr);
   return 0;
}

我使用命令gcc -o prog.o prog.c func.c编译了这个,没有错误和顺利执行。希望这对你有用