0

您好,我的项目有一点问题。我想将 .TXT 文件中的文本扫描到我的结构中,除了我的文本文件的第一行。我试图用fgets()函数来做到这一点,但它只在第一次工作。

这是我工作的一点努力。

 for (i=1;i<=number;i++){
    fgets(s,100,fr);
    fgets(p_akt->signatura,12,fr);
    fgets(p_akt->isbn,15,fr);
    fgets(p_akt->kniha,100,fr);
    fgets(p_akt->autori,100,fr);
    fscanf(fr,"%d",&p_akt->datum);
    fscanf(fr,"%d",&p_akt->preukaz);

    printf("%d.\n",i);
    printf("signatura: %s",p_akt->signatura);
    printf("isbn: %s",p_akt->isbn);
    printf("kniha: %s",p_akt->kniha);
    printf("autori: %s",p_akt->autori);
    printf("datum: %d\n",p_akt->datum);
    printf("preukaz: %d\n",p_akt->preukaz);

    p_akt->p_dalsi = NULL;
}

正如我所说,它只在第一个循环中运行,就像我想要的那样......当它进入第二个循环时,它将每一个信息移动 1,所以在 isbn 我有 signatura,在 kniha 我有 isbn 等。我希望我把一切都说清楚了。谢谢

编辑://

---
DE612301
9783161484100
Gesammelte Werke 3. Logik der Forschung
Karl R. Popper
20120508
56432
---
EN3123123
9780061092190
Men at Arms
Terry Pratchett
20101010
45612

这是我的文本文件,我想用这些信息填充我的结构,除了 ---

4

1 回答 1

1

因为您阅读了这些字段datepreukaz使用fscanf

fscanf(fr,"%d",&p_akt->datum);
fscanf(fr,"%d",&p_akt->preukaz);

preukaz填充后不读取换行符。将格式从更改为%d%d\n

fscanf(fr,"%d\n",&p_akt->datum);
fscanf(fr,"%d\n",&p_akt->preukaz);

换行符也将被读取,并且在下一个循环中,fgets(s,100,fr);将正确读取分隔符---

于 2013-05-05T12:53:23.327 回答