2013-05-05 186 views
0

你好,我的项目有一点问题。我想从.TXT文件扫描文本到我的结构中,除了从我的文本文件的第一行。我试图用fgets()函数做到这一点,但它只能在第一次使用。从.TXT文件跳过行

这里有一点我的工作努力。

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移动everysingle信息,我有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 

这是我的文本文件,我想因为你读datepreukaz使用fscanf领域,以填补我的结构与除---

回答

1

这些信息:preukaz充满后不读

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

换行符。改变格式从%d%d\n后:

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

换行字符将被解读为好,下一个循环,fgets(s,100,fr);将读取分隔符---正确。

+1

这实际上并没有那么好...它运行良好的第一个循环 我会上传文本文件也许它会帮助你们了解 – Toesmash 2013-05-05 12:56:38

+0

请添加您的输入文件的摘录(第2-3完成记录)在原始问题中。 – harpun 2013-05-05 12:58:35

+0

@Toesmash:看看我更新的答案。您正确跳过第一行,并且无法读取整数。 – harpun 2013-05-05 13:12:11