質問: ### 前提・実現したいこと cで通信するためにreadの関数を使用しています。 サーバーから文字列を受信するのですが readから返ってくるバイト数とbufのバイト数の違いが分かりません。 bufはstrlen(buf)で数えています。 例:文字列が-9878の場合 readのバイト数は6, bufのバイト数は5でした。 readのバイト数が1多いのはbufの終端文字を数えているためでしょうか。 ### 該当のソースコード ``` ssize_t read(int fd, char *buf, size_t count); ``` ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) JM Projectから少しコードを引用 https://linuxjm.osdn.jp/html/LDP_man-pages/man2/read.2.html
回答: readが返すのは実際に読み取られて`buf`に入れられたバイト数で、strlenが返すのは`buf`に格納された文字列の長さ(ヌル文字は数えない)ですから、違って当然ですよね。