• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

odczyt pliku

Object Storage Arubacloud
0 głosów
227 wizyt
pytanie zadane 22 maja 2018 w C i C++ przez supergosc44 Początkujący (270 p.)

Witajcie,

męczę się z jednym programem. ostatnią wprowadzoną dane odczytuje x2 dlaczego? czy to przez biały znak?

 

struct student{
char imie[15];
int indeks;
};

int main()
 {
student s;
fstream plik1; // zapis
plik1.open("stu.dat", ios::out | ios::app);

int rozmiar;
cout<<"Ilosc studentow: "; cin>>rozmiar; cin.get();
for(int i = 0 ; i< rozmiar ; i++)
{
    cout<<"Imie :";
    cin.get(s.imie,15);
   cin.get();
    cout<<"Indeks: ";
    cin>>s.indeks;
    cin.get();
plik1.write((char *)&s.imie, sizeof s.imie);
plik1.write((char *)&s.indeks, sizeof s.indeks
            );
   plik1.close();
}
//odczyt?
fstream plik2;
plik2.open("stu.dat", ios::in);
if(!plik2.good())
{
    cout<<"error";
}
while( !plik2.eof() )
{
    plik2.read((char *)&s.imie, sizeof s.imie);
    plik2.read((char *)&s.indeks, sizeof s.indeks);
    cout<<s.imie<<" : "<<s.indeks<<endl;
}

 

1 odpowiedź

0 głosów
odpowiedź 23 maja 2018 przez monika90 Pasjonat (22,940 p.)

Pętla postaci

while (!plik.eof())
{
    wczytaj_porcję_danych();
    beztrosko_ich_sobie_używaj();
}

jest po prostu błędna. Zamiast tego należy sprawdzać poprawność odczytu po próbie odczytu, na przykład:

while (plik2)
{
    plik2.read(reinterpret_cast<char*>(s.imie), sizeof s.imie);
    plik2.read(reinterpret_cast<char*>(&s.indeks), sizeof s.indeks);
    if (plik2)
    {
        cout << s.imie << " : " << s.indeks << endl;
    }
}

 

Podobne pytania

0 głosów
0 odpowiedzi 74 wizyt
0 głosów
1 odpowiedź 264 wizyt
pytanie zadane 11 sierpnia 2023 w C i C++ przez Krloo Początkujący (480 p.)
0 głosów
1 odpowiedź 1,662 wizyt
pytanie zadane 28 października 2018 w C i C++ przez jjanickij Użytkownik (510 p.)

92,762 zapytań

141,686 odpowiedzi

320,499 komentarzy

62,106 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...