您好我的项目有点问题。我想将.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>之外的那些信息填充我的结构
答案 0 :(得分:1)
因为您使用date
阅读了字段preukaz
和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);
将正确读取分隔符---
。