Witam,
mam problem z zadaniem 8 z rozdziału 6 z książki "Język C++ Szkoła programowania wydanie VI":
Treść zadania:
"Napisz program otwierający plik tekstowy, wczytujący go znak po znaku do końca, a następnie podający liczbę znaków w tym pliku."
polega on na tym, że na końcu programu wyświetla mi sumę wszystkich liter zamiast sumy wszystkich znaków co jest wymagane w warunku zadania.
Nie wiem jak skonstruować kod, aby wczytywał on z pliku całą linię tekstu ze wszystkim znakami zamiast liter (wydaje mi się, że z w tym tkwi problem). Myślałem, aby zastosować cin.getline() z tym, że nie wiem w jaki sposób zastosować tą instrukcję w przypadku odczytu danych z pliku?
Proszę o wskazówki jak rozwiązać powyższy problem i ogólną ocenę kodu.
Z góry dziękuję za pomoc.
Kod:
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int main()
{
char nazwa_pliku[30];
ifstream odczyt;
cout << "Witaj! Prosze podaj nazwe pliku ktory chcesz wczytac: ";
cin.getline(nazwa_pliku, 30);
cout << endl;
odczyt.open(nazwa_pliku);
if (!odczyt.is_open())
{
cout << "Otwarcie pliku " << nazwa_pliku << " nie powiodlo sie.\n";
cout << "Program zostanie zakonczony.\n";
exit (EXIT_FAILURE);
}
char dane[200];
int poszczegolne_znaki = 0;
int suma_znakow = 0;
while(odczyt.good())
{
while(odczyt>>dane)
{
++poszczegolne_znaki;
suma_znakow += poszczegolne_znaki;
cout <<dane<<" ";
}
}
if (odczyt.eof())
cout << "Koniec pliku.\n";
else if (odczyt.fail())
cout << "Wczytywanie danych przerwana - blad.\n";
else
cout << "Wczytywanie danych przerwane, przyczyna nieznana.\n";
if (suma_znakow == 0)
cout << "Nie przetworzono zadnych danych.\n";
else
{
cout << "Ilosc wczytanych znakow to: " << suma_znakow;
}
odczyt.close();
cout << endl;
return 0;
}