2013-05-05 5 views
0

Привет, у меня есть небольшая проблема с моим проектом. Я хочу отсканировать текст из .TXT-файла в мою структуру, кроме 1-й строки в текстовом файле. Я попытался сделать это с помощью функции 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; 
} 

Как я сказал, что это работает так же, как я хочу только для первого цикла ... Когда он входит во второй цикл движется everysingle информацию на 1 так и в ISBN я есть Сигнатуры, в KNIHA я и т.д. ISBN Надеюсь, я все понял. Благодаря

EDIT: //

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

Это мой текстовый файл, и я хочу, чтобы заполнить мою-структуру с той информацией, за исключением ---

ответ

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); будет читать разделитель --- правильно.

+1

Это на самом деле не работает, что хорошо ... Это хорошо работает для первого цикла Я загружу текстовый файл, возможно, он поможет вам, ребята, понять – Toesmash

+0

Пожалуйста, добавьте отрывок из вашего входного файла (первые 2-3 полные записи) в исходном вопросе. – harpun

+0

@Toesmash: взгляните на мой обновленный ответ. Вы пропустили первую строку правильно и столкнулись с проблемой чтения целых чисел. – harpun

Смежные вопросы