我试图从文件中读取结构.一切都是正确的,直到我关闭我的应用程序并再次打开它尝试读取数据.
处理终止,状态为-1073741819(0分钟,6秒(s))
我的代码:logika.c
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "logika.h"
int write_struc(char *PF, char *DF, char *TF, char *TL)
{
struct MYSTR myStruct ={PF, DF, TF, TL};
FILE* fb;
if ((fb=fopen(PLIK_DAT, "a"))!=NULL)
{
fwrite(&myStruct, sizeof(struct MYSTR), 1, fb);
fclose(fb);
return 1;
}
else
{
return 0;
}
}
void read_struc()
{
FILE* fb;
struct MYSTR myStruct;
fb = fopen(PLIK_DAT, "r");
while(1) {
fread(&myStruct,sizeof(struct MYSTR),1,fb);
if(feof(fb)!=0)
break;
printf("%s",myStruct.PF);
printf("%10s" ,myStruct.DF);
printf("%10s" ,myStruct.TF);
printf("%10s\n", myStruct.TL);
}
fclose(fb);
}
Run Code Online (Sandbox Code Playgroud)
logic.h
#ifndef LOGIKA_H_INCLUDED
#define LOGIKA_H_INCLUDED
#define PLIK_DAT "baza.dat"
int write_struc(char *PF, char *DF, char *TF, char *TL);
struct MYSTR{
char *PF;
char *DF;
char *TF;
char *TL;
};
#endif // LOGIKA_H_INCLUDED
Run Code Online (Sandbox Code Playgroud)
我已经尝试过二进制写入/读取并且没有帮助.
您的结构包含4个地址.这些地址在您的程序之外毫无意义.如果你期望字符串数据(结构中包含的地址是什么)被写出来,你必须自己做,并设计一个文件格式,允许你重建输入数据.
在你的程序的一次执行中,你得到"幸运",因为这些地址的数据没有改变,所以它看起来像是有效的.但它没有任何用处.