Простой вызов функции C - PullRequest
1 голос
/ 29 декабря 2011

Попытка вызвать эту функцию в C без особой удачи:

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

Я пробовал много вариантов, таких как это:

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

На самом деле я немного поработал над Си и Си ++, но по какой-то причине я скучаю по лодке из-за чего-то довольно простого.

Ответы [ 2 ]

6 голосов
/ 29 декабря 2011

Вы можете видеть, что ваш звонок неправильный, даже не зная, что правильно ...

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

Два формальных параметра с одинаковой сигнатурой.

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

Два реальных параметра одного типа.

Так почему вы используете другой синтаксис при их передаче?


Конечно, это не все, что здесь не так, вам нужно объявить параметр response с размером, достаточным для возвращаемого значения. Объявление этого размера, указанного для формального параметра, является самым безопасным.

char request[] = "help";
char response[256];
int result = sendcommand( request, response );
3 голосов
/ 29 декабря 2011

response - это указатель, но вы разыменовываете его как char, когда функция принимает char*.

Это должно работать:

int result = sendcommand(request, response);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...