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

Odczytywanie i zapis do pliku

Ostatnio zmodyfikowano 2014-02-16 00:00
Autor Wiadomość
marcin022
Temat założony przez niniejszego użytkownika
Odczytywanie i zapis do pliku
» 2014-02-15 22:01:18
Witam na podstawie jednej z lekcji na tej stronie napisalem kilka funkcji realizujacych zapis i odczyt z pliku txt
#include <iostream>
#include <fstream>

using namespace std;


bool good;
void opNaPliku()
{
    fstream plik("plik.txt", ios::in | ios::out);
    if(plik.good() == true )//ta inst war sprawdza czy program dostal dostep do pliku

        cout << "uzyskano dostep do pliku"<<endl;
        else
            cout<<"dostep do pliku zostal zabroniony!"<<endl;


}
void odczyt()
{
    fstream plik("plik.txt", ios::in | ios::out);//otwieram plik
    string dane;//tworze zmienna ktora bedzie przechowywac dane
    getline(plik, dane);//przenosze zawartosc pliku do zmiennej
    cout<<endl<<dane;//wypisuje
}

void prawidlowy_odczyt()// ta funkcja pokazuje jak prawidlowo poslugiwac sie struieniem
{
    fstream plik("plik.txt", ios::in | ios::out );
    if(plik.good() == true)// zanim wykonamy operacje na pliku sprawdzamy czy mozemy go otworzyc
    {
        string dane;
        getline(plik, dane);
        cout<<endl<<dane;
    }
}

//pobieranie danycg blokami
void bloki()
{
    fstream plik("plik.txt", ios::in);
    char bufor [1024];
    plik.read(bufor, 1023);
    cout<<endl<<"wczytano "<<plik.gcount()<<" bajtow do bufora"<<endl;
}
void zapis()
{
    fstream plik("plik.txt", ios::out | ios::app);
    if(plik.good() == true)
    {
        string dane;
        cout<<"Wprowadz tresc ktora chcesz dodac do pliku "<<endl;
        getline(cin, dane);
        while(!cin.good())
        {
            cin.clear();
            cin.sync();
            getline(cin, dane);
        }
        plik<<endl<<dane;

    }
}
/*prototyp niedzialajacy
void czytaj()
{
    fstream plik("plik.txt", ios::in );
    string tab[10];
  while(!plik.eof())
  {
      int i;
        if( i<10)
        {
                getline(plik, tab[i]);


        }
  else break;
  }
  for(int i=0; i<10; i++)
  {
      cout<<tab[i]<<endl;
  }
}
*/
int main()
{

    //opNaPliku();
    odczyt();
    prawidlowy_odczyt();
    bloki();
    zapis();
    czytaj();
    return 0;
}

Po odpaleniu program odczytuje jedynie pierwszy wiersz pliku txt. natomiast funkcja zapis(); dziala poprawnie i w pliku od nastepnego wiersza pojawia sie wpisana przez nas fraza. Po kolejnym uruchomieniu funkcji odczyt niestety nadal wyswietla sie tylko pierwszy wiersz. Bardzo mi zalezy zeby program wyswietlil calosc tego pliku. Prosze o pomoc i informacje jak tego cudu dokonac ? :)
P-104690
leon_w
» 2014-02-16 00:00:12
Poczytaj o "getline()".
Odczytuje ona dane, do momentu napotkania znaku nowego wiersza (jest to wartość domyślna, można wstawić inny znak).
Odczytywanie powinienieś zrobić w pętli.
np
C/C++
while( !plik.eof() )
P-104701
« 1 »
  Strona 1 z 1