gpt4 book ai didi

c - Windows 中的二进制输出

转载 作者:可可西里 更新时间:2023-11-01 09:40:57 26 4
gpt4 key购买 nike

我编写了一个读取二进制文件的程序,对其内容进行一些处理并将结果写入不同的文件。在 Linux 中它工作得很好,但在 Windows 中它不工作;输出文件总是 1KB...

这是程序的简化版本:

#include <stdio.h>

void copyFile(char* source, char* dest);

int main (int argc, char* argv[])
{
if (argc != 3)
printf ("usage: %s <source> <destination>", argv[0]);
else
{
copyFile(argv[1], argv[2]);
}
}


void encryptFile(char* source, char* destination)
{
FILE *sourceFile;
FILE *destinationFile;

int fileSize;

sourceFile = fopen(source, "r");
destinationFile = fopen(destination, "w");

if (sourceFile == 0)
{
printf ("Could not open source file\n");
return;
}

if (destinationFile == 0)
{
printf ("Could not open destination file\n");
return;
}

// Get file size
fseek(sourceFile, 0, SEEK_END); // Seek to the end of the file
if (ftell(sourceFile) < 4)
return; // Return if the file is less than 4 bytes
fseek(sourceFile, 0, SEEK_SET); // Seek back to the beginning

fseek(sourceFile, 0, SEEK_SET); // Seek back to the beginning

int currentChar;

while ((currentChar = fgetc(sourceFile)) != EOF)
{
fputc(currentChar, destinationFile);
}

fclose(sourceFile);
fclose(destinationFile);
}

我很乐意为您提供问题的更多详细信息,但我没有太多在 Windows 中编写 C 语言的经验,我真的不知道问题出在哪里。

最佳答案

你应该使用 b 标志来打开:

fopen(source, "rb")
fopen(destination, "wb");

我知道由于某些( 脑损伤 )主观决定,如果文件未在“二进制模式”。

编辑

我从未研究过它,但现在有人告诉我 0x1A 在 DOS 中用作软 EOF。

关于c - Windows 中的二进制输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6586382/

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