【发布时间】:2016-05-22 16:11:02
【问题描述】:
我写了一个 c 代码如下,复制一个文件。它确实适用于unicode 文件(例如exe、rar),我使用char 数据类型数组在其中复制文件“块”。我知道,char data-type 可以将1 字节存储为扩展ASCII 标准。
在fread() 函数中,将buffer[buflen] 变量用作char 数组,因为在其中复制exe 文件(100 字节)的块,然后复制buffer[buflen] 包含在另一个文件中.一个unicode 字符块怎么可能存储在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);
}
entrypoint 部分:
int main()
{
copyFile("e:/1.exe", "e:/2.exe");
return 0;
}
在fread和fwrite函数中使用chardata-type或struct(包含char)的原因是什么?
感谢大家帮助我。
【问题讨论】: