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

[C++] Odczyt i zapis danych na plikach tekstowych

Ostatnio zmodyfikowano 2015-01-12 16:30
Autor Wiadomość
lamamasters
Temat założony przez niniejszego użytkownika
» 2015-01-11 02:23:44
Michał (1aam2am1), dzięki za pomoc, Twój kod zapisuje dane tekstowe do pliku w formie realnego tekstu!
Mógłbym Cię prosić jeszcze o napisanie fread? Niestety nie potrafię sobie z tym poradzić.

Odkryłem, że mój kod działa w pełni poprawnie, ale tylko w przypadku danych innych niż tekstowe... :)

Pozdrawiam!
P-124627
1aam2am1
» 2015-01-11 12:34:03
http://www.cplusplus.com/reference/cstdio/fread/
P-124641
lamamasters
Temat założony przez niniejszego użytkownika
» 2015-01-11 16:45:41
Niestety byłem już na tej stronie, jeszcze przed napisaniem tego postu na forum.
Mógłbyś mi pomóc i dopisać fread? W funkcji odczytBazy();


C/C++
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>

using namespace std;

class klasa {
public:
    std::string imie;
    std::string nazwisko;
};


int rozmiarBazy = 2;
klasa tablica[ 2 ];
klasa tablica2[ 2 ];

void zapisBazy()
{
    FILE * fd = NULL;
    if(( fd = fopen( "baza.txt", "wt" ) ) != NULL )
    {
        for( int i = 0; i < rozmiarBazy; i++ )
        {
            //fwrite(&tablica[i], sizeof(tablica[i]), 1, fd);
            fwrite( tablica[ i ].imie.c_str(), tablica[ i ].imie.size(), 1, fd );
        }
        fclose( fd );
    }
    else
    {
        cout << "Bład zapisu bazy!";
    }
   
}

void odczytBazy()
{
    FILE * fd = NULL;
    if(( fd = fopen( "baza.txt", "rt" ) ) != NULL )
    {
        for( int i = 0; i < rozmiarBazy; i++ )
        {
            //TUTAJ :(
            //fread( & tablica2[ i ].imie.c_str(), tablica[ i ].imie.size(), 1, fd );
        }
        fclose( fd );
    }
    else
    {
        cout << "Bład odczytu bazy!";
    }
}



void wypiszBaze()
{
    for( int i = 0; i < rozmiarBazy; i++ )
    {
        //cout << tablica[i].imie << endl;
        cout << tablica2[ i ].imie << endl;
    }
}

main() {
   
    tablica[ 0 ].imie = "3Kamil";
    tablica[ 1 ].imie = "Ada";
   
   
    zapisBazy();
    odczytBazy();
    wypiszBaze();
   
   
    cin.ignore();
    getchar();
}
P-124663
1aam2am1
» 2015-01-12 16:30:51
C/C++
fseek( fd, 0, SEEK_END );
size_t lSize = ftell( fd );
rewind( fd );

char * buffer;

buffer = new char[ lSize + 1 ];

fread( buffer, 1, lSize, fd );

tablica[ i ].imie = buffer;

delete[] buffer;

Powinno chyba działać, ale nie sprawdzałem
P-124733
1 « 2 »
Poprzednia strona Strona 2 z 2