gpt4 book ai didi

更改二进制文件中的值 (C)

转载 作者:太空宇宙 更新时间:2023-11-04 02:39:55 27 4
gpt4 key购买 nike

程序应该更改记录中的特定值,我使用 fseek 和 fwrite 来这样做。但是当我运行它时,它会覆盖下一条记录。

这是我的程序的一部分:

j = 0;
while ((fread(&Rec, sizeof(Rec), 1, file) == 1) && (Found == 0))
{
if (strcmp(Rec.Name, SearchName) == 0)
{
if (Rec.BD == SearchBD)
{
Found = 1;
printf("\nEnter the new value : ");
scanf("%f", &Val);

fseek(file, (sizeof(Rec))*j, SEEK_SET);
strcpy(Rec.Name, SearchName);
Rec.BD = SearchBD;
Rec.V = Val;
fwrite(&Rec, sizeof(Rec), 1, file);

}

}

j++;
}

最佳答案

您的代码无法覆盖下一条记录。代码是正确的。但是,如果您在程序中进一步使用 Rec(您只提供了一个片段),那么您会发现 Rec 具有意想不到的值。这是因为在找到要查找的记录后,while 循环在退出循环之前又执行了一次fread。那是因为 while 循环必须写成:

while ((Found == 0) && (fread(&Rec, sizeof(Rec), 1, file) == 1))

否则将在测试found 并退出循环之前执行另一个fread

关于更改二进制文件中的值 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33149672/

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