Hmm,
Może mój kod wrzucę, z pousuwanymi nieistotnymi elementami:
#include <cstdlib>
#include <fstream>
#include <iostream>
#include <curses.h>
std:: ofstream plik;
int ster()
{ gotowe=0;
while ((klawisz != ERR )&&(gotowe<max)) {
klawisz=getch();
switch (klawisz) {
case KEY_UP:
//bla
case KEY_DOWN:
//blabla
case KEY_LEFT:
//bla bla
case KEY_RIGHT:
//bla bla
continue;
case KEY_END: // w razie bledu
{
//TU MA MI ZAMKNĄĆ PLIK
clear();
move(8,8);
attron(A_BOLD);
printw("Przegrales! Uruchom gre raz jeszcze!\n\n");
printw("W pliku statystyki.txt znajdziesz najwazniejsze informacje dotyczace Twojej rozgrywki.");
attroff(A_BOLD);
}
default:
move(20,20);
printw("BLAD");
}}}
move(20,20);
printw("Brawo! Ukonczyles etap! Nacisnij enter");
refresh();
getchar();
}
int main()
{
initscr();
keypad(stdscr, true);//mozliwosc korzystania ze strzalek, funkcyjnych itp
if(has_colors()==TRUE) //czy konsola obsluguje kolory
{
//......
//ruszamy strzalka
klawisz=getch();
while ((klawisz != ERR )&&(klawisz!=0xa)) {
switch (klawisz) {
case KEY_UP:
if (wybor == 1) {
//itd itp itd itp zwykle klasyczne menu
if (wybor==1) {
move(2,10); printw("Podaj swoje imie:");
echo();
char imie[40]; //tablica na imie
getstr(imie);
move(4,10);
refresh();
plik.open("statystyki.txt");
plik<<"Statystyki gracza "<<imie<<"\n";
clear();
move(0,0);
attron(A_BOLD);
printw("Grasz jako %s. Etap pierwszy.\n", imie);
attroff(A_BOLD);
printw("Jesli popelniles blad lub chcesz przerwac rozgrywke wcisnij klawisz END.");
refresh();
wyp(); //etap pierwszy
//plansza
//sciany
ster();
////////////////////////etap drugi
wyp();
//etap drugi
//plansza
//sciany
ster();
// etapów jest 9!! z każdego się wychodzi poprzez kliknięcie END i następnie po przeczytaniu tego co w end poprzez kliknięcie 'krzyżyka'
}}else{
//jesli wybrano koniec
if (wybor==2) {
endwin();
exit(0);
}}}
getchar();
endwin();
exit(0);
}
Jak widać zamknięcie pliku jest możliwe jedynie w end. Chcę bowiem także w tę funkcję dorzucić jeszcze dopisywanie do pliku numeru etapu itd. Czy ktoś jest w stanie mi pomóc?