2011-12-29 30 views
1

试图调用C时,该功能没有任何真正的运气:简单的C函数调用

int sendcommand(char str[256], char reply[256]) 

我已经尝试了许多变化,例如这样的:

char request[] = "help"; 
char response[]; 
int result = sendcommand(request, *response); 

其实我已经做了一点C和C++,但由于某种原因,我错过了一些相当基本的东西。

+0

你得到了什么错误? – 2011-12-29 02:55:29

+0

第二个帕尔姆是错的。 – 2011-12-29 02:59:23

回答

6

你可以看到你的电话是错误的,甚至不知道什么是正确的......

int sendcommand(char str[256], char reply[256]) 

两个具有相同签名的形式参数。

char request[] = "help"; 
char response[]; 

两个相同类型的实参。

那么,为什么你通过它们时使用不同的语法?


这还不是全部,这是错误这里当然,你需要有足够的尺寸返回值声明的响应参数。将其声明为为形式参数指定的大小是最安全的。

char request[] = "help"; 
char response[256]; 
int result = sendcommand(request, response); 
+0

伟大的东西家伙。这让我在80年代的Mac电脑上重新认识了Think C的一些日子。我不得不修复另一个小事,那就是将我的项目编译为C++。感谢帮助,虽然我觉得有点尴尬,要问一些如此微不足道的事情。 C/C++经过多年的Java/C#之后,就显得非常直观。 – 2011-12-29 03:05:53

3

response是一个指针,但是您将它解除引用到char,当该函数采用char*时。

这应该工作:

int result = sendcommand(request, response); 
+1

+1,只要'响应'有一些空间分配给它。 'response'不是一个指针,它是一个数组。 – 2011-12-29 02:56:57