みなさんありがとうございます。

実は、char buf[100]中にはバイナリデータが入る場合もある事を
書いていませんでした……
この場合、\0で抜けてしまうstrlen()じゃダメですよね。
おそらくそのミスを指摘されたんだと思います。

でも>>263さんの解説を見ると、sizeof()もダメな気が……