在我的函数中使用fseek()时遇到麻烦

时间:2015-08-03 23:59:22

标签: c

我试图在循环中使用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);
}

0 个答案:

没有答案