2011-12-29 5 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

какая ошибка вы получаете? –

+0

Это второе парм просто неправильно. –

ответ

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

Отличный парень. Это принесло некоторую ясность из моих старых Think C дней на Mac в 80-х. Мне пришлось исправить еще одну второстепенную вещь, которая должна была скомпилировать мой проект на C++. Цените помощь, хотя я чувствую себя немного смущенным, чтобы спросить о чем-то столь тривиальном. C/C++ настолько интуитивно понятен после многих лет Java/C#. –

3

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

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

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

+1, до тех пор, пока 'response' имеет некоторое пространство, выделенное для него. И 'response' не является указателем, это массив. –

Смежные вопросы