Przekazywanie oryginalnego pliku do funkcji.

0

Cześć, mam następujący problem. W jaki sposób mogę przekazać plik do funkcji ? Chodzi mi o to że w mainie mam utworzony jakiś plik

#include <iostream>
#include <fstream>


using namespace std;

void zapisz(fstream*);

int main()
{
	fstream plik("plik.txt");
	zapisz(&plik);
	system("pause");
	return 0;
}

I chce przekazać oryginał tego pliku do funkcji która mi coś w nim zapisze

void zapisz(fstream* plik)
{
	plik->open("plik.txt", ios::in);
	*plik << "BLABLABLA" << endl;
	plik->close();
}

No i wszystko się kompiluje, program nawet działa ale plik nie jest w ogóle tworzony, już nie wspominając o zapisywaniu :/

1

Już w main(), tworząc obiekt pliku z podaniem ścieżki do pliku na dysku, następuje jego otwarcie. Stąd w funkcji nie powinieneś ponownie go otwierać. Sprawdź czy próba otwarcia (w main()) się powiodła. Plik ma operator wartościowania bool więc wystarczy zwykły if( ! plik) { // Plik nie został otwarty }

No i ja bym przesłał przez referencje. Nie ma szczególnego powodu by robić to wskaźnikiem.

#include <iostream>
#include <fstream>
 
using namespace std;
 
void zapisz(fstream&);
 
int main()
{
    fstream plik("plik.txt");
    zapisz(plik);
    system("pause");
    return 0;
}
 
void zapisz(fstream& plik)
{
    plik << "BLABLABLA" << endl;
    plik.close(); // Także dyskusyjne.. może lepiej zamknąć w main() ?
} 

1 użytkowników online, w tym zalogowanych: 0, gości: 1