从.TEXT文件中删除行

时间:2013-05-05 12:48:03

标签: c file file-io

您好我的项目有点问题。我想将.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

这是我的文本文件,我希望用除<--- p>之外的那些信息填充我的结构

1 个答案:

答案 0 :(得分:1)

因为您使用date阅读了字段preukazfscanf

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);将正确读取分隔符---