c - 写入文件 C 时忽略\0 个字符

标签 c arrays file fwrite

我正在编写简单的服务器 - 客户端应用程序。在服务器端,我收到数据的 char 数组(具有 const 大小)。但是,最后一个字符数组可以有空字节。

我将收到的数组追加到循环文件中。这是代码:

char buffer[256];
/* ...  */
FILE *file;
file = fopen(file_name,"ab+");
for (i = 0; i < parts; ++i) {
    if ((length = recv(sockfd, buffer, 256, 0)) < 0) {
        /* recv failed  */
    }
    send(sockfd, "OK", 2, 0);
    fwrite(buffer, 1, 256, file);
}
fclose(file);

例如: ... Quisque dignissim turpis sapien, non facilisis risus gravida 在。 \00\00\00\00

有什么方法可以跳过最后的\0 个字符吗?或者我必须逐字节复制最后一个数组。

最佳答案

使用

fwrite(buffer, 1, length, file);

这只会写入您实际收到的字符数。如果额外的 \0 是数据包的一部分,它将被写入,否则不会。

如果您收到 \0 字符作为数据包的一部分,但您不想写入它们,那么您必须这样做:

fwrite(buffer, 1, strlen(buffer), file);

关于c - 写入文件 C 时忽略\0 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20922926/

相关文章:

python - 为什么我的脚本不写入文件?

在 c 中更改输入分隔符

c++ - 以度而不是弧度计算三角函数

c - 什么浮点值使 sprintf_s() 产生 "1.#QO"?

python - numpy.transpose 是否在内存中重新排序数据?

c - 无法将一维数组转换为二维数组

c - NVAPI 设备 ID 与 CUDA 设备 ID 有何关系?

java - 需要有关如何将宠物对象放入数组中的帮助吗?

javascript - 用户通过&lt;input type ="file"/>选择文件时如何获取文件名?

c 程序将媒体文件从一个位置复制到另一个位置