gpt4 book ai didi

将 unicode 文件的包含复制到 c 中的 char 数组中

转载 作者:太空宇宙 更新时间:2023-11-04 01:54:11 24 4
gpt4 key购买 nike

我写了一个 c 代码如下,复制一个文件。它适用于 unicode 文件(例如 exe、rar),我使用 char 数据类型数组在其中复制文件“ block ”。我知道,char data-type 只能存储 1 字节作为扩展 ASCII 标准。

fread() 函数中,使用 buffer[buflen] 变量作为 char 数组,因为复制了一个 的 block exe 文件(100 字节),然后将 buffer[buflen] 复制到另一个文件中。怎么可能将 unicode 字符 block 存储在 char 中?为什么这段代码真正适用于 unicode 文件而没有任何问题?

copyFile 函数:

void copyFile(const char *src, const char *dst)
{
const int buflen = 100;
char buffer[buflen];
long fileSize, curFileSize, offset = 0;
FILE *r, *w;

r = fopen(src, "r+b");
w = fopen(dst, "w+b");

fseek(r, 0, SEEK_END);
fileSize = ftell(r);
fseek(r, 0, SEEK_SET);

while(fileSize - (curFileSize = ftell(r)) >= buflen)
{
fseek(r, offset * buflen, SEEK_SET);
fread(&buffer, sizeof(buffer), 1, r);
fwrite(&buffer, sizeof(buffer), 1, w);
offset++;
}

if ((fileSize - curFileSize) != 0)
{
fseek(r, (offset - 1) + (curFileSize), SEEK_SET);
fread(&buffer, fileSize - curFileSize, 1, r);
fwrite(&buffer, fileSize - curFileSize, 1, w);
}

fclose(w);
fclose(r);
}

入口点部分:

int main()
{
copyFile("e:/1.exe", "e:/2.exe");
return 0;
}

使用 char data-typestruct(包含 char)的原因是什么freadfwrite 函数?

感谢大家帮助我。

最佳答案

任何文件,无论编码如何,都只是一个字节序列。 char 类型可以存储任何字节,因此您只是逐字节复制文件。 (char 在 C 和 C++ 中用作字符类型和能够保存字节的数字类型。这可能会造成混淆,但这两种用法都是有效的。)

freadfwrite 是根据 char 指定的,因为它们读取和写入字节。

关于将 unicode 文件的包含复制到 c 中的 char 数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37376608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com