如何正确地fread()和fwrite()非文本文件?

Xabirau

这是我第一次使用fread()fwrite()功能。所以我在学习如何处理它们。对于文本文件,我已经成功读取了,然后在另一个函数中创建了一个文件。但是,无论何时我尝试使用非文本文件,它们都会输出损坏。我在这里问是因为我没有通过互联网搜索此事的成功结果。

简而言之:我将在服务器上打开的文件中收集的数据发送给客户端,然后客户端尝试使用已解析的数据创建确切的文件。

所以,让我解释一下我是如何做到的:我以二进制模式打开一个非文本文件:

FILE* myfile = fopen(fullPath.c_str(), "rb");

然后,我创建一个循环来读取文件:(由于某种原因,我发现非文本文件的实际大小等于size/4

int readPos = 0;
std::string externalBuffer;

while (true) {
    unsigned char buffer[1024];
    int bytesRead = 0;

    bytesRead += fread(buffer, sizeof(unsigned char), 1024, upfile);    

    if (bytesRead == 0)
        break;

    externalBuffer = unsigned_char_to_string(buffer, bytesRead); //This simple function loops over the buff and converts each entry to the string -> the results are numbers from 0-255

//Here I convert the buffer to a string and send it to the client to be parsed and add to a string buffer like: dataChunk += parsedString;

//clear buffers

}

现在,我在客户端成功解析了字符串(我不确定损坏问题是否出在我将缓冲区转换为字符串)。发送完循环中的所有数据之后。客户端尝试使用缓冲区dataChunk进行写操作:

FILE* myfile = fopen(fullPath.c_str(), "wb+");
fwrite(dataChunk.c_str(), sizeof(char), dataChunk.size(), myfile);
fclose(myfile);

我已经尝试将发送的数据转换为十六进制字符串,将每个条目从0-255转换为其十六进制并写入新文件。我也尝试将dataChunk字符串转换unsigned char数组。但是我所有的尝试都导致文件损坏。我使用此方法尝试创建可执行文件和png图像。我还看到了一些示例,这些示例fopen立即fwrite使用unsigned char一次复制所有文件,然后以相同的功能复制到一个新创建的文件,看起来对他们有用。

那么,这段代码有什么问题,为什么它没有输出完美的文件呢?我使用fread()fwrite()错误?

Xabirau

使用@Barmar更正。我将unsigned_char_to_string函数更改为以下代码:

std::string externalBuffer(&buffer[0], &buffer[0] + bytesRead);

而且效果很好!

谢谢@Barmar!对不起,我很讨厌:)你让我开心!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

bash:如何正确地从文本文件读取/分配多行到变量

来自分类Dev

正确编写和保存文本文件的方法

来自分类Dev

如何正确确定文本文件的字符编码?

来自分类Dev

如何正确确定文本文件的字符编码?

来自分类Dev

如何正确对齐多列文本文件?

来自分类Dev

如何使用RegexParser正确解析文本文件?

来自分类Dev

如何从文本文件中正确读取值

来自分类Dev

如何删除文本文件中的非 ASCII 字符?

来自分类Dev

正确读取文本文件

来自分类Dev

读取格式正确的文本文件

来自分类Dev

如何根据文本文件的内容移动和分组?

来自分类Dev

如何从文本文件中读取和保存数据?

来自分类Dev

如何逐行读取和打印文本文件的内容?

来自分类Dev

如何从文本文件中提取键和值

来自分类Dev

如何使用批处理文件有选择地删除文本文件中的文本?

来自分类Dev

如何使我的应用正确读取外部文本文件?只显示怪异的人物和钻石

来自分类Dev

Home Brew Java HTTP Server无法正确提供非文本文件

来自分类Dev

正确地从Java中的文件显示文本

来自分类Dev

搜索和读取文本文件

来自分类Dev

从文本文件解析和拆分

来自分类Dev

查找和编辑文本文件

来自分类Dev

解析和搜索文本文件

来自分类Dev

查找和编辑文本文件

来自分类Dev

有效地解析和提取文本文件中的唯一值

来自分类Dev

使用pyinstaller时如何在正确的目录中正确包含文本文件

来自分类Dev

如何从文本文件中读取非英语文本并以python打印?

来自分类Dev

如何正确地将文本换行到新行?

来自分类Dev

如何正确地从R中的pdf接收文本?

来自分类Dev

如何轻松地将文本文件分解成小于阈值的碎片?

Related 相关文章

热门标签

归档