gpt4 book ai didi

C fwrite 和文件大小

转载 作者:太空宇宙 更新时间:2023-11-04 07:22:40 25 4
gpt4 key购买 nike

我对一个奇怪的问题感到困惑。当我做类似下面的事情时:

FILE* fl;
int* d = new int[3];
d[0] = -3;
d[1] = -3;
d[2] = -3;

plik = fopen("E:\data.txt","r+b");
fwrite((char*)d, sizeof(int), sizeof(int)*3, fl);
fclose(fl);
system("pause");

它正确地将一些数据写入文件,我可以在记事本中清理并获得 0B 文件大小。但是,如果我将 -3 更改为 -2:

FILE* fl;
int* d = new int[3];
d[0] = -2;
d[1] = -2;
d[2] = -2;

plik = fopen("E:\data.txt","r+b");
fwrite((char*)d, sizeof(int), sizeof(int)*3,fl);
fclose(fl);
system("pause");

结果是,当我在记事本中清理数据并保存文件时,它一直是2B,并且无法清理到最后。问题是什么?。提前致谢。

最佳答案

您正在将二进制数据写入一个文件,然后用文本编辑器打开它。结果是未定义的。当您在文档中看到“未定义”一词时,请注意。您有责任不做那样的事情。文本编辑器用于打开文本文件,即字符串。将 int 写入文本文件的方法如下:

char str[BIGNUMBER];
sprintf(str, "%d", d[0]);
fwrite...

这可能不是您想要的,但这是获得记事本兼容文本文件的唯一方法。您可能想要做的是找到一个可以打开、显示和编辑二进制文件的二进制文件编辑器。就个人而言,我只是将 vim 与 -b 选项一起使用,即使在 Windows 上也是如此。

关于C fwrite 和文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20414283/

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