Вы можете видеть, что ваш звонок неправильный, даже не зная, что правильно ...
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 );