-3
在下面發佈的代碼中,從文件讀寫結構時存在問題。輸出結果是垃圾數據,我無法自己找到解決方案。使用的操作系統: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;
}
編譯時是否啓用了警告和調試信息? (即用'gcc -Wall -g'編譯,然後改進直到沒有給出警告爲止)。然後,學習如何使用調試器'gdb'並逐步使用它。另外,檢查'fread'的結果,並在每個循環的'fread'之前清除讀取的數據。 – 2013-04-10 05:19:44
任何人應該知道,.dat文件中有什麼[即使在不太可能的情況下,它有一些有效的數據],你正在嘗試閱讀? – 2013-04-10 05:21:24
@BarathBushan:這個代碼是寫和讀文件的......所以我們知道寫什麼。 – 2013-04-10 05:22:58