Przekazywanie oryginalnego pliku do funkcji.

Przekazywanie oryginalnego pliku do funkcji.
Tomek Bieniek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
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

Kopiuj
#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

Kopiuj
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 :/

MO
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tam gdzie jest (centy)metro...
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.

Kopiuj
#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() ?
} 

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.