gpt4 book ai didi

c - 读取和打印文件时接收垃圾数据

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

在下面发布的代码中,从文件写入和读取结构时出现问题。输出结果是垃圾数据,我自己找不到解决方案。使用的操作系统:Ubuntu

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

typedef struct eventos {
int id;
char titl[60];
char desc[120];
int estado;
} evento;

struct eventos y;

void nuevo_evento(struct eventos *event){
FILE *eve;
eve = fopen("Eventos.dat","ab+");
fwrite(&event,sizeof(struct eventos),1,eve);
fclose(eve);
}

void VerEventos(){
FILE *events2 = fopen("Eventos.dat", "rb+");
printf("------------------------------\n");
fread(&y, sizeof(struct eventos), 1, events2);
while(!feof(events2)){
printf("%d %s %d %s\n", y.id, y.titl, y.estado, y.desc);
fread(&y, sizeof(struct eventos), 1, events2);
}
printf("------------------------------\n");
fclose(events2);
}

int main(){
remove("Eventos.dat");

y.id = 1;
y.estado = 0;
strcpy(y.titl,"Evento1");
strcpy(y.desc,"evento culiao");

nuevo_evento(&y);

y.id = 2;
y.estado = 0;
strcpy(y.titl,"Evento2");
strcpy(y.desc,"evento bacan");

nuevo_evento(&y);

VerEventos();

return 0;
}

最佳答案

latest program 的函数 nuevo_evento() 中您发布了,只需更改

fwrite(&event,sizeof(struct eventos),1,eve);

fwrite(event,sizeof(struct eventos),1,eve);

如果你看一下,fwrite()函数,第一个参数是指向数据的指针。在您的程序中,&event 是指针本身的地址,但 event 是它所指向的结构的地址,这就是您必须与 fwrite 一起使用的内容()。

也看看这个question ,这将对您面临的问题有所帮助。

关于c - 读取和打印文件时接收垃圾数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15917498/

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