ユーザーが引数として IP、ポート、およびメッセージを入力できるようにする TCP ソケット クライアント プログラムを作成しました。
それは次のようなものです:
./a.out 127.0.0.1 555 test message
私の質問は、「テスト」( argv[3]
) と「メッセージ」( argv[4]
) などを組み合わせてchar *message
?
あなたがしたいことは、実際にはこれです:
/a.out 127.0.0.1 555 "test message"
メッセージを引用符で囲むと、argv[3] に完全なメッセージが含まれます。そうすれば、わざわざ引数を連結する必要はありません。
を使用strlen
して文字列の長さを取得し、適切なサイズのバッファーを割り当てて、sprintf
またはstrcpy
を使用して、書式設定されたデータで埋めることができます。
しかし、Kurtis が言うように、スペースを含む文字列をプログラムに渡すだけなら、それはシェルの問題であり、プログラムの問題ではありません。Unix では一重引用符 ( )'
を使用する必要があり、Windows では二重引用符 ( "
) を使用できます。