2013-05-05 133 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