Linux c socket抓取网页保存到文件一直是乱码

如题,建立连接后发送请求后,保存到文件的代码如下:

    while(recvSize=recv(sockfd,recvBuf,BUF_SIZE,0)>0){
        fwrite(recvBuf,sizeof(char),strlen(recvBuf),fp);
        printf("%s",recvBuf);
        memset(recvBuf,0,sizeof(recvBuf));
    }

网页可以在终端上正常显示,但是这样保存到文件后打开就提示文件打开出错,包含无效字符。。。。

strlen遇到\0就返回了,所以计算的值不一定准确啊

试试fwrite前加上
recvBuf[recvSize] = '\0';

strlen(recvBuf)计算字符串长度是不对的

fwrite(recvBuf,sizeof(char),recvSize,fp)
打16进制出来看