gpt4 book ai didi

c++ - 无法使用c在文件中写入二进制数据

转载 作者:行者123 更新时间:2023-11-30 19:22:15 26 4
gpt4 key购买 nike

我在 Windows Vista 操作系统中使用 vs2010,问题是我想读取 exe 文件并将其加密并存储,但是当我写回数据时没有插入任何内容,我的意思是文件已创建,但没有错误,并且文件是空的,我已经做了一千次了,它可以在 eclipse 上运行,但不能在 vs2010 上运行,我需要将它移植到 gui 中,任何人都可以重定向我的错误位置

FILE *pFile, *file;
size_t result;

pFile = fopen(fName, "r+b");
if (pFile==NULL) {MessageBox(NULL, L"Could not open file", L"Information", MB_ICONERROR); return FALSE;}

fseek(pFile, 0 ,SEEK_END);
sData->fSize = ftell(pFile);
rewind(pFile);

sData->fbuffer = (unsigned char *) malloc(sizeof(char) * sData->fSize);
if (sData->fbuffer == NULL) {MessageBox(NULL, L"Memory error", L"Information", MB_ICONERROR); fclose(pFile); return FALSE;}

file = fopen("out.txt", "w+b");
while ((result = fread(sData->fbuffer, 1, sData->fSize, file)) > 0) {
if (!(fwrite(sData->fbuffer, 1, result, file))) {
MessageBox(NULL, L"Write error", L"Information", MB_ICONERROR);
}
fclose(file);
}
fclose(file);

//result = fread(sData->fbuffer, 1, sData->fSize, pFile);
//if (result != sData->fSize) {MessageBox(NULL, L"Read error", L"Information", MB_ICONERROR); fclose(pFile); return FALSE;}

fclose (pFile);

return TRUE;

编辑

我真的很抱歉,问题在于文件的位置,它采用 unicode 格式,其中 fopen 接受 ascii 并且该位置仅显示 C 我必须转换它才能获得正确的结果,谢谢

最佳答案

您可能希望在 fread() 中使用 pFile 而不是 file

//----------------------------------------------------  pFile not file
while ((result = fread(sData->fbuffer, 1, sData->fSize, pFile)) > 0) {
if (!(fwrite(sData->fbuffer, 1, result, file))) {
MessageBox(NULL, L"Write error", L"Information", MB_ICONERROR);
}
fclose(file);
}

关于c++ - 无法使用c在文件中写入二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17258503/

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