gpt4 book ai didi

c - fwrite() 将未知的零

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

在 C 中使用 fwrite() 时遇到一个奇怪的问题。用整数编辑文件后,在 fwrite() 添加的最后一个元素之前我得到零(“0”)。我的练习是除以文件中的整数由 10 个或更少元素组成的群。

例如,我有: {2, 3, 9, 4, 6, 7, 5, 87, 65,12, 45, 2, 3, 4, 5, 6, 7, 8, 9}

编辑后我需要:{2, 3, 9, 4, 6, 7, 5, 87, 65, 12, 87, 45, 2, 3, 4, 5, 6, 7, 8, 9, 45 };

使用下面的代码我得到:{2, 3, 9, 4, 6, 7, 5, 87, 65, 12, 87, 45, 2, 3, 4, 5, 6, 7, 8, 9, 0, 45 };在逐步调试的过程中fwrite()只工作了两次,前十个元素后写了87,剩下的写了45。fwrite()没有写零。是吗?那么?它最终从哪里来?

我的代码:

while (!feof(fp)) {

fread(&elems[k], sizeof(int), 1, fp);
fwrite(&elems[k], sizeof(int), 1, hp);
++k;

if (k == 10 || feof(fp)){
for (i = 0; i < 10; ++i){
if (elems[i] > max_number){
max_number = elems[i];
}
}
fwrite(&max_number, sizeof(int), 1, hp);
for (i = 0; i < 10; ++i){
elems[i] = 0;
}
max_number = INT_MIN;
k = 0;
}

}

感谢您的解答!

最佳答案

  • 使用 feof 将导致读取额外的项目。
  • 必须检查 fwritefread 调用中的错误。
    • 一个可能的错误是 EOF 错误。
    • 如果fread返回0个项目,则读取的值将保留为之前的值。可能是 0。这可能就是你额外的 0 的来源。

关于c - fwrite() 将未知的零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28774926/

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