1

ユーザーが引数として IP、ポート、およびメッセージを入力できるようにする TCP ソケット クライアント プログラムを作成しました。

それは次のようなものです:

./a.out 127.0.0.1 555 test message

私の質問は、「テスト」( argv[3]) と「メッセージ」( argv[4]) などを組み合わせてchar *message?

4

3 に答える 3

9

あなたがしたいことは、実際にはこれです:

/a.out 127.0.0.1 555 "test message"

メッセージを引用符で囲むと、argv[3] に完全なメッセージが含まれます。そうすれば、わざわざ引数を連結する必要はありません。

于 2011-10-13T19:28:18.307 に答える
0

を使用strlenして文字列の長さを取得し、適切なサイズのバッファーを割り当てて、sprintfまたはstrcpyを使用して、書式設定されたデータで埋めることができます。

しかし、Kurtis が言うように、スペースを含む文字列をプログラムに渡すだけなら、それはシェルの問題であり、プログラムの問題ではありません。Unix では一重引用符 ( )'を使用する必要があり、Windows では二重引用符 ( ") を使用できます。

于 2011-10-13T19:29:49.103 に答える