我试图在循环中使用fseek()
来打印我的结构,但我似乎无法在这里找到问题。
如果我想打印第一个元素,我会收到信号错误,指针k
指向0x1。
void drucke (struct anime *k, int max)
{
int auswahl = 0;
int grenze1, grenze2;
printf("\n\nWillst du mehrere Elemente ausgeben (2) oder nur eins(1)?");
scanf("%d",&auswahl);
loescheTastaturpuffer();
if (auswahl == 1)
{
printf("\nWelche Nummer moechtest du ausgeben? Maximalnummer ist %d:",max);
scanf("%d",&grenze1);
loescheTastaturpuffer();
fp = fopen(filename,"rb");
fseek(fp,(grenze1-1) * sizeof(struct anime),SEEK_SET);
fread(&k,sizeof(struct anime),1,fp);
printf("\nNummer des Animes : %d",k->animenr);
printf("\nName des Animes : %s",k->animename);
printf("Season des Animes: %s",k->animeseason);
printf("Start des Animes: %d",k->datumstart);
fclose(fp);
}
这是我的功能,这就是我在主打开的方式。
drucke(&speicher[0], i);
speicher
与我的结构属于同一类型。
这是我写入文件的方式。
void schreibe(struct anime *k,int max)
{
int i;
if ((fp = fopen (filename,"wb")) == NULL)
{
fprintf(stderr, "\nDatei konnte nicht geöffnet werden");
}
for (i=0; i < max;i++)
{
fwrite(& *(k + sizeof(list)*i),sizeof(list),1,fp);
}
fclose(fp);
}