0

このコード行の使用に関する説明を読んだことは覚えていますが、この 1 週間でソケットに関する本をたくさん読んだので、もう見つけることができません。

私は本の中で覚えています。彼らはコードを =\0 を使って書き、それを 1 にしたほうがよいと言っていました。

検索してみましたが、運がありませんでした。これは、使用されている場所で読んでいるコードの一部です

 nread = recv(newsock, buffer, 25, 0);
 buffer[nread] = '\0';
4

3 に答える 3

5

受信したバッファをNUL で終了する C-stringに変換しstrlen, strcpy, etc. ます。これを使用できます-1. その場合、メモリの破損が発生します。

于 2013-08-04T00:24:09.293 に答える
2

これは、文字配列内のコンテンツの終わりを示す C/C++ ヌル ターミネータです。

http://en.wikipedia.org/wiki/Null-terminated_string

于 2013-08-04T00:26:35.460 に答える
0

文字列がそのバイトで終了することを意味します。この場合は最後です。

\0 はヌル文字です。

したがって、「This is my message.aG¤(Ag4h98av¤"G#¤".

ネットワークを扱う場合、通常は整数などのデータを送信する必要があります。最も一般的な方法は、平文ではなくバイナリで送信することです。たとえば、整数は「$%\0n」のようになります。4 バイトですが、3 番目のバイトは \0 です。したがって、\0 が存在する可能性があることを考慮する必要があります。したがって、データのバイナリ表現を文字列として保存するのではなく、バッファ/文字列ストリームとして保存する必要があります。

もちろん、バイナリ表現を出力したくないかもしれません。しかし、あなたはそれを心に留めておく必要があります。たぶん、あなたはそれを印刷したいと思うでしょう。

于 2013-08-04T00:24:54.593 に答える