Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Czy metoda eof() musi wczytać endl, żeby zwrócić wartość false?

Ostatnio zmodyfikowano 2016-04-24 18:30
Autor Wiadomość
Monika90
» 2016-04-24 13:28:22
Jeżeli ostatnia linia w pliku kończy się \n, tak jak powinna, to się pętla wykona jeden raz więcej.
P-147597
Lucas535
Temat założony przez niniejszego użytkownika
» 2016-04-24 13:29:45
C/C++
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    char napis[ 50 ];
    fstream fout;
    fout.open( "abc.txt", ios::out );
    fout << "wiersz 1" << endl;
    fout << "wiersz 2" << endl;
    fout << "wiersz 3";
    fout.flush();
    ifstream fin;
    fin.open( "abc.txt" );
    while( !fin.eof() )
    {
        cout << "diag\n";
        fin.getline( napis, 50 );
        cout << napis << endl;
    }
    fin.close();
    fout.close();
    return 0;
}

Jeżeli ostatnia linia w pliku kończy się \n, tak jak powinna, to się pętla wykona jeden raz więcej.
Czyli tyle razy ile jest wierszy.
P-147598
carlosmay
» 2016-04-24 13:35:19
Czyli tyle razy ile jest wierszy.
W tym przypadku tak.

Weźmy pod uwagę sytuację gdy zapisujesz do pliku w pętli.
Czy będziesz dodawał warunek aby ostatni wiersz zapisał się bez przejścia do nowej linii?

edit. Czytanie danych w pętli ma sens, gdy wiersze lub części pliku są powtarzalne.
Jeśli nie są, trzeba znać strukturę pliku i dopasować się do niej.
P-147601
Lucas535
Temat założony przez niniejszego użytkownika
» 2016-04-24 13:44:02
Moim zdaniem pusty wiersz to też wiersz i powinno się go także odczytywać, więc ja tu nie widzę problemu.

Dzięki wielkie za pomoc w sprawie bufora, nie wpadłem na to domykanie bufora. Teraz wszystko działa jak należy.
P-147602
mateczek
» 2016-04-24 18:30:40
Moim zdaniem pusty wiersz to też wiersz i powinno się go także odczytywać

Aleś ty uparty!!! ludzie Ci dobrze piszą a ty dalej swoje!!!

Nie chodzi o pusty wiersz tylko o nieprawidłowo/prawidłowo zakończony. Twoja pętla przy prawidłowo zakończonym wierszu czyta jeden więcej bo dopiero w następnej iteracji odczyta koniec pliku (eof).

Gdy wiersz będzie prawidłowo zakończony odczyta ci 1 wiersz więcej. Prawidłowe zakończenie wiersza na windows to \r\n a nie samo \n
P-147613
1 2 « 3 »
Poprzednia strona Strona 3 z 3