在C语言中传递字符串指针数组
我有一个简单的C函数,我想传递一个指向各种字符串的指针数组。我在函数调用参数上遇到编译器吠叫的问题。这是我正在做的简单描述 myfunction.h在C语言中传递字符串指针数组,c,arrays,parameter-passing,C,Arrays,Parameter Passing,我有一个简单的C函数,我想传递一个指向各种字符串的指针数组。我在函数调用参数上遇到编译器吠叫的问题。这是我正在做的简单描述 myfunction.h int myServices(int, char *[]); myfunction.c #include <myfunction.h> int myService(int value, char *strpointer[]) { *** } #include <myfuntion.h> void main ()
int myServices(int, char *[]);
myfunction.c
#include <myfunction.h>
int myService(int value, char *strpointer[]) {
***
}
#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
}
#包括
int myService(int值,char*strpointer[]{
***
}
mainproduction.c
#include <myfunction.h>
int myService(int value, char *strpointer[]) {
***
}
#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
}
#包括
空干管(){
//初始化参数
int结果;
int-stringcnt;
char string1[8]=“-st”;
字符字符串2[8]=“-ir”;
char*stringptr[10];
//初始化stringptr
stringptr[0]=string1;
stringptr[1]=string2;
stringcnt=2;
//呼叫服务
result=myService(stringcnt,stringptr);我运行了您的代码并注意到一些事情:首先,在头文件中,您没有正确定义参数(缺少coma),同样,您的主入口点也没有正确的返回类型(需要为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
-
我使用命令gcc-oprog.oprog.cfunc.c
编译了这篇文章,没有任何错误,执行也很顺利。希望这对你有用我运行了你的代码,并注意到了一些事情:首先,在你的头文件中,你没有正确定义参数(在缺少coma的情况下),同样,您的主入口点也没有正确的返回类型(需要为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
-
我使用命令gcc-oprog.oprog.cfunc.c
编译了这篇文章,没有错误,执行也很顺利。希望这篇文章对你有用我注意到的几点…int-myServices(int-char*[]);
int-myService(int-value,char*strpointer[])
没有对齐?是哪一个?缺少逗号。已编辑的源代码。void main(argc,argv[])
——真的吗?你的书就是这么说的?很抱歉出错了。我只是在没有使用IDE的情况下键入了一个具有代表性的示例。只是试图让代码集中在问题上。或者int main()
或者int main(int argc,char*argv[])
(或者char argv
,哪个更正确但出于个人原因,我不喜欢)。至于提出一个问题,你要做的第一件事是删除多个文件。是的,这就是你希望它在项目中的外观。不,这与你在这里提出的问题无关。将试图重现你的问题的人的工作量减到最低。这通常有助于解决一些问题。我不知道有几件事ice…int-myServices(int-char*[]);
int-myService(int-value,char*strpointer[])
不对齐?哪一个?缺少逗号。已编辑的源代码。void main(argc,argv[])
--真的吗?你的书就是这么说的?很抱歉出错了。我只是在没有使用IDE的情况下键入了一个具有代表性的示例。只是试图让代码集中在问题上。或者int main()
或者int main(int argc,char*argv[])
(或者char**argv
,这将是“更正确的”但出于个人原因,我不喜欢)。至于提出一个问题,你要做的第一件事是删除多个文件。是的,这就是你希望它在项目中的外观。不,这与你在这里提出的问题无关。将试图重现你的问题的人的工作量减到最低。这通常有助于解决一些问题。我验证了我的同事我在“main”中删除了myService调用中的“result=”命令编译器停止了吠叫。我在myService中有正确的返回整数值。不确定为什么会发生这种情况,但我有足够的时间继续调试。感谢帮助。我验证了我的代码与您的代码,发现它是等效的。我在“main”中从myService调用中删除了“result=”编译器停止了吠叫。我在myService中有正确的返回整数值。不确定为什么会发生这种情况,但我有足够的时间继续调试。谢谢你的帮助。