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

question-closed C++ zakończenie wczytywania pliku

Object Storage Arubacloud
+2 głosów
4,449 wizyt
pytanie zadane 27 września 2015 w C i C++ przez qwertz Użytkownik (850 p.)
zamknięte 28 września 2015 przez qwertz
Dopiero się uczę programowania w c++ i mam pewien problem.

Chcę wczytać z pliku tekstowego ciąg znaków ustawionych jeden obok drugiego. Gdy dochodzi do końca ciągu wczytuje mi ciągle ostatni znak.

np. dla ciągu "AFFDRES" dostaje "AFFDRESSSSSSSS..."

Jak przerwać wczytywanie znaków gdy dojdzie do końca?
komentarz zamknięcia: Rozwiązany problem

4 odpowiedzi

0 głosów
odpowiedź 27 września 2015 przez Patrycjerz Mędrzec (192,320 p.)

http://cpp0x.pl/kursy/Kurs-C++/Obsluga-plikow/305 - przeczytaj sobie o metodzie eof.

0 głosów
odpowiedź 27 września 2015 przez niezalogowany

Funkcja eof() zwraca true jeżeli jest już koniec pliku, np

fstream file;

while (!file.eof())
{
 // <-wczytywanie danych
}

 

0 głosów
odpowiedź 27 września 2015 przez qwertz Użytkownik (850 p.)

Mam kolejny problem bo dla ciągu "ddA" otrzymuje : d-2 A-1 A-1

W programie chodziło o to aby zliczał powtarzające się znaki i wypisywał ile ich było.

#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;

int main()
{
    char tab[255]= {};
    int ile[255];
    for(int i=0; i<255; i++)ile[i]=0; //Wyzeruje tablice
    char bufor;
    fstream plik;

    plik.open("znaki.txt");

    for(int i=0; !plik.eof(); i++)
    {
        plik>>bufor;
        for(int j=0; j<255; j++) //sprawdza czy jusz takiego znaku nie było
        {
            if(tab[j]==bufor) //Jeżeli był dodaje do ile 1
            {
                ile[j]++;
                break; //zatrzymuje sprawdzanie
            }
            else if(tab[i]=='\0') //Jeżeli nie dodaje nowy
            {
                tab[i]=bufor; //Ustawia nowy
                ile[i]++; //dodaje do niego jeden
                break; //zatrzymuje sprawdzanie
            }
        }
    }

    for(int i=0; i<25; i++)
    {
        if(tab[i]!='\0')cout<<tab[i]<<" - "<<ile[i]<<endl; //wypisuje ile znaków było
    }

    return 0;
}

 

0 głosów
odpowiedź 27 września 2015 przez adrian17 Ekspert (345,160 p.)
komentarz 28 września 2015 przez qwertz Użytkownik (850 p.)
Dzięki pomogło.

Podobne pytania

0 głosów
1 odpowiedź 8,944 wizyt
0 głosów
2 odpowiedzi 2,231 wizyt
pytanie zadane 1 lutego 2016 w Rozwój zawodowy, nauka, praca przez Pawel9922 Nowicjusz (160 p.)
0 głosów
1 odpowiedź 367 wizyt
pytanie zadane 18 grudnia 2015 w C i C++ przez sh1nen Obywatel (1,570 p.)

92,615 zapytań

141,465 odpowiedzi

319,782 komentarzy

61,997 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...