2011-12-29 17 views
1

シンプルなC関数呼び出し

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

私はこのような多くのバリエーションを試してみました:

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

私は実際のビットをやりましたCとC + +しかし何らかの理由で私はここで何か基本的なものにボートを逃している。

+0

どのようなエラーが表示されますか? –

+0

2番目のparmは間違っています。 –

答えて

6

をあなたの呼び出しでも同じシグネチャを持つ権利が何であるか...

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

二つの仮パラメータを知らずに間違っていることがわかります。

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

同じタイプの2つの実パラメータです。

なぜ、パスするときに別の構文を使用しますか?ここではもちろん間違っていることすべてではありません


、あなたは戻り値に十分な大きさと応答パラメータを宣言する必要があります。仮パラメータに指定されたサイズに宣言するのが最も安全です。

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

すばらしいスタッフ。これは、80年代のMacで私の古いThink Cの日からいくつかの明確さを取り戻した。私はC++にコンパイルするために私のプロジェクトを設定することだったもう一つの小さな事を修正しなければなりませんでした。私は少しでも些細なことについて尋ねるのは少し恥ずかしいと感じていますが、助けを感謝します。 C/C++は、Java/C#の長年を経て、直感に反するものです。 –

3

responseはポインタですが、関数がchar*のときはcharに逆参照しています。

これは動作するはずです:

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

+1、 'response'にはスペースが割り当てられています。そして 'response'はポインタではなく、配列です。 –

関連する問題