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

Zapisywanie w pliku przy użyciu osobnej funkcji

Ostatnio zmodyfikowano 2015-08-23 12:54
Autor Wiadomość
eldarin
Temat założony przez niniejszego użytkownika
Zapisywanie w pliku przy użyciu osobnej funkcji
» 2015-08-23 12:04:42
Witam, na wstępie dziekuje za udostepnienie kursu.

Stworzylem program, ktory dla roznych sytuacji uzywa tej samej funkcji, z roznymi parametrami. Funkcja wyglad aw ten sposob:

void generujserie(int A, int B, int C, int D, int E, int F, int G, int H, int I, int J, int K)

Chcialbym, zeby wewnatrz niej dokonywalo sie nadpisywanie pewnych danych do pliku. W 'main' stworzylem wiec ponizsze zapisy:

fstream plik;
plik.open("C:\\Users\\Michał P\\Documents\\Visual Studio 2015\\Projects\\X\\x.txt", ios::in | ios::out);
if (plik.good() == true)
{
plik << "Uzyskano dostep do pliku!" << endl;
system("pause");
generujserie(A, B, C, D, E, F, G, H, I, J, K);
system("pause");
plik.close();
}

Niestety wewnatrz funkcji generujserie nie moge uzyc zapisu do pliku, gdyz pojawia sie blad, ze nie zarejestrowano zmiennej plik.
Jak zmienilem zapis i dodalem zmienna do funkcji (na logike, bo w kursie nie opisujecie jak to zrobic):

void generujserie(int A, int B, int C, int D, int E, int F, int G, int H, int I, int J, int K, fstream plik)

a pozniej:

fstream plik;
plik.open("C:\\Users\\Michał P\\Documents\\Visual Studio 2015\\Projects\\X\\x.txt", ios::in | ios::out);
if (plik.good() == true)
{
plik << "Uzyskano dostep do pliku!" << endl;
system("pause");
generujserie(A, B, C, D, E, F, G, H, I, J, K, plik);
system("pause");
plik.close();
}

to pojawia sie nastepujacy blad:

error C2280: 'std::basic_fstream<char,std::char_traits<char>>::basic_fstream(const std::basic_fstream<char,std::char_traits<char>> &)': attempting to reference a deleted function
1>  c:\program files (x86)\microsoft visual studio 14.0\vc\include\fstream(1226): note: see declaration of 'std::basic_fstream<char,std::char_traits<char>>::basic_fstream'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
P-136771
JMII89
» 2015-08-23 12:15:08
Obiekt fstream nie da się kopiować musisz go przekazać przez referencję
std::fstream &plik. Pozatym na co ci tyle zmiennych w funkcji? Dla mnie wygląda to troche bez sensu bo pewnie da się to inaczej zrobić. A pozatym coś mi się zdaje,że próbujesz otwoerać plik w trybie do odczytu i zapisu,a tak się nie da. Musisz użyć std::ifstream,std::ofstream.
P-136773
BadBullPL
» 2015-08-23 12:24:42
A pozatym coś mi się zdaje,że próbujesz otwoerać plik w trybie do odczytu i zapisu,a tak się nie da. Musisz użyć std::ifstream,std::ofstream.
Bzdura. Da się.
P-136776
eldarin
Temat założony przez niniejszego użytkownika
» 2015-08-23 12:25:03
Program generuje ciagi 11-cyfrowych liczb, z ktorych ta ostatnia jest suma kontrolna, ktora do obliczenia uzywa roznych wag pozostalych cyfr. DLatego uproscilem sobie w ten sposob, bo jestem bardzo poczatkujacy. Z biegiem czasu i nauki pewnie ogranicze uzycie tych zmiennych, bo domyslam sie juz jak inaczej mozna to zrobic, tylko nie dotarlem jeszcze tak daleko w kursie. Na razie potrzebuje miec plik z wygenerowanymi kilkudziesięcioma tysiacami rekordow ;)

Nie rozumiem, moglbys podpowiedziec mi uzycie kodu w main oraz w funkcji?
P-136777
JMII89
» 2015-08-23 12:40:13
C/C++
void generujserie( int A, int B, int C, int D, int E, int F, int G, int H, int I, int J, int K, std::fstream & plik )

generujserie( A, B, C, D, E, F, G, H, I, J, K, plik );

O to ci chodziło ?


@BadBullPL
PL ? XD.Mi to jakoś nigdy nie działało lub coś źle robiłem,ale nie chciało zapisywać do pliku otwierając w trybie do zapisu i do odczytu.
P-136778
eldarin
Temat założony przez niniejszego użytkownika
» 2015-08-23 12:45:11
mi zapisuje wczesniejsza informacje, wiec dziala.
Tak, o to mi chodzilo, dzieki, zjem obiad i sprobuje ;)
P-136779
eldarin
Temat założony przez niniejszego użytkownika
» 2015-08-23 12:54:29
Dziala, dzieki :)
P-136781
« 1 »
  Strona 1 z 1