gpt4 book ai didi

c - 存储到我的文件中的结构没有被覆盖(C)

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

#include <stdio.h>
#include <string.h>

typedef struct batch
{
int month;
int day;
int qty;
float item_cost;
int batch_num;
} BATCH;

struct stock
{
char item_name[50];
int t_qty;
float t_item_cost;
int item_code;
BATCH batch[10];
int last_batch_num;
float price_for_one;
float price;
};

int main()
{
FILE *filepointer;
filepointer = fopen("stocklist.txt", "r+");

struct stock loop;

while(fread(&loop, sizeof(struct stock), 1, filepointer))
{
printf("%s\n", loop.item_name);
strcpy(loop.item_name, "Jerb");
printf("%s\n", loop.item_name);

fwrite(&loop, sizeof(struct stock), 1, filepointer);
}
}

有一个文本文件,其中的 item_name 是 Huggies,所以每次我运行该程序时,都应该将 Huggies 的名称更改为“Jerb”,但似乎它对文件没有任何影响,并且旧的 item_name 在文件中保持不变。

我本以为如果我使用“r+”模式,它会覆盖文件中的这些数据,但事实并非如此。

请帮忙!!

最佳答案

尝试在循环内执行 fflush() 并在退出之前执行 fclose 。调用 fwrite() 时,输出会写入缓冲区,直到生成 4kb 数据,只有达到 4kb 或调用 fflush/fclose 时才会刷新到文件。

关于c - 存储到我的文件中的结构没有被覆盖(C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42751390/

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