Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problemy z programem

Ostatnio zmodyfikowano 2011-12-29 15:00
Autor Wiadomość
pawajoro
Temat założony przez niniejszego użytkownika
» 2011-12-29 11:22:27
Kolejny problem:
C/C++
#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ć?
"
P-46554
Mrovqa
» 2011-12-29 15:00:54
Przyjrzyj się temu kawałkowi kodu...
C/C++
int i = linijki( plik ); // 1.
string napis[ i + 1 ]; //2.
tablica( plik, napis, i ); //3.
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).
P-46592
1 « 2 »
Poprzednia strona Strona 2 z 2