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

Operowanie na pliku

Ostatnio zmodyfikowano 2018-04-18 09:54
Autor Wiadomość
chriskck98
Temat założony przez niniejszego użytkownika
Operowanie na pliku
» 2018-04-15 20:46:30
Cześć, mam problem z modyfikacja pliku.Mianowicie chodzi o sprawdzenie czy w pliku sa jakies dane i potem wpisanie ich do tablicy.
C/C++
int pop( int & a ) {
    cin >> a;
    while( cin.fail() && a <= 0 ) {
        cin.clear();
        cin.sync();
        cin.ignore();
        cin >> a;
    }
    return a;
}
int main()
{
    int a;
    string dane, tablica[ 10 ];
    fstream plik;
    plik.open( "text.txt" );
    if( plik.good() ) {
        if( getline( plik, dane ) ) {
            cout << "\n\tNie musisz nic wpisywac!";
        }
        else {
            cout << "\n\tWpisz 10 liczb do pliku: ";
            for( int i = 0; i < 10; i++ ) {
                plik << pop( a ) << endl;
            }
        }
        cout << "\n\n";
        plik.close();
    }
    else {
        cout << "\n\tNie ma takiego pliku!";
    }
    int i = 0;
    fstream read;
    read.open( "text.txt" );
    if( read.good() ) {
        cout << "Liczby z pliku w tablicy: ";
        while( !read.eof() ) {
            while( i < 10 ) {
                plik >> tablica[ i ];
                cout << tablica[ i ] << " ";
                i++;
            }
        }
        read.close();
    }
    cout << endl;
    return 0;
}
P-170706
darko202
» 2018-04-16 11:27:42
przypuszczam że podstawowym problemem jest sposób otwarcia pliku

1.
nie używasz przełączników
http://www.cplusplus.com​/reference/fstream/fstream/open/
http://cpp0x.pl/kursy/Kurs-C++​/Obsluga-plikow/305
C/C++
std::fstream plik;
plik.open( "nazwa_pliku.txt", std::ios::in | std::ios::out );

2.
jeśli uda ci się otworzyć plik to
czytasz tylko jedną linię
C/C++
if( plik.good() ) {
    if( getline( plik, dane ) )
a nie wiele jak się podejrzewam spodziewasz
 
3.
zwróć uwagę na komentarz //zakładamy, że plik istnieje
C/C++
std::fstream plik( "nazwa_pliku.txt", std::ios::in ); //zakładamy, że plik istnieje

4.
naucz się techniki debugowania kodu
będziesz mógł śledzić wykonanie programu linia po linii z obserwacją
jak zachowują się stany wszystkich zmiennych
P-170715
chriskck98
Temat założony przez niniejszego użytkownika
» 2018-04-16 20:25:59
Za wspomnienie o przełącznikach bardzo dziękuję, ale z getline w ifie chodzi o wczytanie linijki z pliku i jeśli takowa istnieje to program przechodzi dalej, w przeciwnym wypadku prosi o podanie liczb. Program zatrzymuje sie na wczytaniu liczb z pliku do tablicy. Jakby ktos podal rozwiazanie tej zagwozdki to bylbym bardzo wdzieczny!
P-170725
YooSy
» 2018-04-16 21:45:31
Czego można spodziewać się w pliku?
Sugeruję użyć debugera do zbadania sprawy.
Jeszcze jedno: nie są sprawdzane niepowodzenia wczytywania liczb z pliku.
Jeśli trafi się tam jakiś niepożądany znak, to dalsze wczytywanie weźmie w łeb.
P-170726
chriskck98
Temat założony przez niniejszego użytkownika
» 2018-04-18 07:48:35
Chcę żeby ten program byl uniwersalny i jak będą cyfry w pliku, to zeby nic nie wpisywalo. Z tym niepozadnym znakiem to masz racje. Za początkujacy jednak jestem, zeby to rozwiazac.
P-170731
YooSy
» 2018-04-18 09:54:08
P-170732
« 1 »
  Strona 1 z 1