Treść zadania:
2. [trudne zadanie] Napisz program, który dla każdego wiersza w pliku:
wczyta liczby i wypisze ich sumę w przypadku, gdy wszystkie liczby uda się wczytać;
wypisze komunikat o błędnych danych, jeżeli wystąpi błąd podczas wczytywania liczb (komunikat ma wyświetlać numer wiersza, w którym wystąpił błąd).
Dane w dokument.txt :
1 2 3
3 4 a 5
3 2
5 2 2 1 3
3 4
Nie wiem dlaczego ale funkcja nie chce mi wczytać "pliku"
o to kod:
#include <iostream>
#include <fstream>
#include<cstdlib>
using namespace std;
bool czyNapotkanoZnakNowegoWiersza(ifstream & plik )
{
char cZnak;
for(;; ) //nieskończona pętla
{
plik.clear();
cZnak = plik.peek(); //sprawdzamy jaki kolejny znak zostanie zwrócony przez operację odczytu
if( plik.fail() )
return false; //wystąpił błąd odczytu danych
if( !isspace( cZnak ) )
return false; //pobrany znak nie jest białym znakiem
plik.get( cZnak ); //odczytujemy biały znak z pliku
if( plik.fail() )
return false; //wystąpił błąd odczytu danych
if( cZnak == '\n' )
return true;
} //for
}
int main()
{
fstream plik;
plik.open("Dokument.txt");
if(!plik.good())
{
cout << "Nie udalo mi sie otworzyc pliku!" << endl;
exit(0);
}
while(czyNapotkanoZnakNowegoWiersza(plik)==false){ //Błąd występuje tutaj
}
return 0;
}
``````cpp
w skrócie wychodzi mi taki komunikat: "error: niepoprawna inicjalizacja odwołani"