Nowe posty

xx Mint czy Knoppix, który lepszy jako system z USB (1)
Wczoraj o 20:24:25
xx Framebuffer 640x5760 => 2560x1400. "pocięcie" pamięci framebuffer (2)
2020-10-26, 22:06:34
xx kontrola dostępu (1)
2020-10-26, 07:47:58
xx Użytkownicy należący do grupy (1)
2020-10-26, 07:44:46
xx Klawiatura nie działa po włączeniu Ubuntu (3)
2020-10-25, 19:23:34
xx Szkielet z getops (3)
2020-10-25, 15:06:20
xx 2 adresy na jednej sieciówce - brak pingu (1)
2020-10-22, 14:09:22
xx Knoppix z polską klawiaturą. Czy tak się da w ogóle? (5)
2020-10-20, 21:31:47
xx DNF autouzupełnianie (0)
2020-10-20, 18:18:23
xx Propozycja recenzji (11)
2020-10-19, 17:58:22

Autor Wątek: sprawdzanie całego plik w poszukiwaniu danych  (Przeczytany 1073 razy)

Offline MateuszA

  • Users
  • Użytkownik
  • **
  • Wiadomości: 70
    • Zobacz profil
sprawdzanie całego plik w poszukiwaniu danych
« dnia: 2016-08-22, 20:46:06 »
Mam pewien problem z wyszukiwaniem danych w pliku jak mój plik wugłada tak:
dane.txt
800
pusta linia
pusta linia
i tak dalej

To wszystko działa ok
Ale jak zrobie plik taki:
dane.txt
pusta linia
pusta linia
pusta linia
pusta linia
800
To program zwraca mi że dane nie są liczbami więc chciałem zrobić by przeszukiwał cały plik ale mam problem. Po pierwsze to nie działa :) a po drugie znowu QT creator nie podpowiada mi jak chce zrobić file.eof() nie widzi eof i tak samo w programie nie działa mi podpowiedz w file.good() chociaż ta ostatnia funkcja działa poprawnie.
std::string my_file::add_budget()
{
    std::string line;
    while ( !file.eof() )
    {
        std::getline( file , line );
    }
    return line;
}

Offline Filys

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 28
    • Zobacz profil
Odp: sprawdzanie całego plik w poszukiwaniu danych
« Odpowiedź #1 dnia: 2016-08-23, 13:46:35 »
W C++ lepiej sprawdzian eof se darować bo się źle kończy (poszukać innej metody na koniec pliku, możliwe że umieszczenie getline w while da rade). Jak to zrobić w C?

// radośnie założę, że 300 bajtów wystarczy.
const size_t buff_siz = 300;
char buff[buff_siz];
for(;fgets( buff, buff_size, file )!=NULL;) {
 
  //tu coś rób z danymi.
 
}

//wszelkie błędy jak sprawdzać przeczytasz w man funkcja.
« Ostatnia zmiana: 2016-08-23, 14:12:33 wysłana przez Filys »