Problemy z programem
Ostatnio zmodyfikowano 2011-12-29 15:00
pawajoro Temat założony przez niniejszego użytkownika |
» 2011-12-29 11:22:27 Kolejny problem: #include <iostream> #include <fstream> #include <string> using namespace std;
int linijki( fstream & plik ) { if( plik.good() ) { string napis; int c = - 1; while( !plik.eof() ) { getline( plik, napis ); c++; } return( c ); } else cout << "Error! Nie udalo przetworzyc sie pliku!" << endl; return 0; }
void tablica( fstream & plik, string napis[], int i ) { int c = 0; while( c < i ) { getline( plik, napis[ c ] ); c++; } }
int szukajznacznika( string table[] ) { int c = - 1; size_t znalezionaPozycja; do { c++; cout << "HejK!"; cout << c << endl; znalezionaPozycja = table[ c ].find( "kuid-table" ); if( znalezionaPozycja != std::string::npos ) return c; } while( znalezionaPozycja = std::string::npos ); cout << "Lap mnie!"; return 0; }
int main() { fstream plik; plik.open( "C:/config.txt", ios::in ); if( plik.good() ) { int i = linijki( plik ); string napis[ i + 1 ]; tablica( plik, napis, i ); int a =( szukajznacznika( napis ) ); int k = i - a; string kuidy[ k ]; cout << a; plik.close(); } else cout << "Error! Nie udalo otworzyc sie pliku!" << endl; return 0; }
Program zapętlił się w funkcji szukajznacznika i, po dojściu do ostatniej linijki, naturalnie wywala z błędem. /edit: Po teście dowiedziałem się, że problem jest w funkcji "tablica". W tablicy "napis" nic nie zostało przepisane. Co robić? " |
|
Mrovqa |
» 2011-12-29 15:00:54 Przyjrzyj się temu kawałkowi kodu... int i = linijki( plik ); string napis[ i + 1 ]; tablica( plik, napis, i );
1. Co robi ta funkcja? Czyta ci plik przesuwając wskaźnik na koniec. 2. Co to jest ?! Jak ci się to kompiluje o.O Korzystasz z Deva? Powinieneś użyć operatora new i zmienić kompilator :) 3. Plik został przeczytany wcześniej i wskaźnik jest ustawiony na końcu... Powinieneś ustawić wskaźnik odczytu na początek pliku i usunąć flagę ios::eofbit (czy jak to tam było :P). |
|
1 « 2 » |