Mam problem z zapisem do pliku w ponizszym programie.......zamiast dopisac do pliku to program nadpisuje go....tzn po uruchomieniu programu ''dodamy abonenta'' zapiszemy i odczytamy to poprzedni abonenci nam znikną a zostana zapisani ci wpisanie ''przed chwila w programie''.....a drugie: ... jak uruchomimy program zczytamy z pliku i chcemy uruchomic wyszukiwarke to wywala polecenie ''lista jest pusta'' a w pliku txt mamy zapisanego abonenta.....
Prosilbym o pomoc w ten sprawie
#include <iomanip>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <fstream>
#include <conio.h>
#include <stdio.h>
#include <windows.h>
using namespace std;
const int MAX = 100;
const int STUD = 100;
const char* Nazwa = "osoby.txt";
int licz_abonent = 0;
extern "C" void __stdcall Sleep(DWORD dwMilliseconds);
struct abonent {
char nazwisko[MAX], imie[MAX];
int telefon;
};
abonent *tablica_ab[sTUD];
void Dodaj() {
abonent *nowy_abonent;
nowy_abonent = new abonent;
cout << "Podaj nazwisko: ";cin.getline(nowy_abonent->nazwisko, MAX);
cout << "Podaj imie: ";cin.getline(nowy_abonent->imie, MAX);
int i, dlug = strlen(nowy_abonent->nazwisko);
nowy_abonent->nazwisko[0] = toupper(nowy_abonent->nazwisko[0]);
for (i = 1;i < dlug;i++) nowy_abonent->nazwisko = tolower(nowy_abonent->nazwisko);
nowy_abonent->imie[0] = toupper(nowy_abonent->imie[0]);
dlug = strlen(nowy_abonent->imie);
for (i = 1;i < dlug;i++) nowy_abonent->imie = tolower(nowy_abonent->imie);
cout << "Podaj Nr.telefonu: ";
cin >> nowy_abonent->telefon;
cin.get();
tablica_ab[licz_abonent] = nowy_abonent;
licz_abonent++;
}
void Znajdz() {
char szukaj[MAX];
if (licz_abonent == 0) {cout << "Lista jest pusta" << endl;} else {
cout << "Podaj szukane nazwisko ";
cin >> szukaj;cin.get();
szukaj[0] = toupper(szukaj[0]);
cout << setw(10) << "Nazwisko" << setw(10) << "Imie" << setw(10) << "Telefon" << endl;
for (int i = 0; i < licz_abonent; i++) {
if (strcmp(tablica_ab->nazwisko, szukaj) == 0) {
cout << setw(10) << tablica_ab->nazwisko << setw(10) << tablica_ab->imie << setw(10) << tablica_ab->telefon << endl;
} else cout << "Nie ma takiego abonenta" << endl;
}
}
}
void Usun() {
char usun[MAX];
cout << "Podaj nazwisko do usuniecia" << endl;
cin >> usun; cin.get();
int i, dlug = strlen(usun);
usun[0] = toupper(usun[0]);
for (int i = 1;i < dlug;i++) usun = tolower(usun);
for (int i = 0; i < licz_abonent; i++) {
if (strcmp(tablica_ab->nazwisko, usun) == 0) {
delete tablica_ab; for (int j = i;j < licz_abonent;j++) tablica_ab[j] = tablica_ab[j+1];
licz_abonent--;
}
}
}
void fnZapisz(char* Nazwa = "osoby.txt") {
if (licz_abonent == 0) {
cout << "Nie ma czego zapisac" << endl;
return;
}
ofstream plik_zap(Nazwa);
if (!plik_zap) {
cerr << "\n\aPliku " << Nazwa << " nie udalo sie otworzyc\n" << endl;
} else {
cout << "zapisuje do pliku:\n";
for (int i = 0;i < licz_abonent;i++) {
plik_zap << tablica_ab->nazwisko << "," << tablica_ab->imie
<< "," << tablica_ab->telefon << endl;
cout << tablica_ab->nazwisko << ' ' << tablica_ab->imie
<< ' ' << tablica_ab->telefon << endl;
}
plik_zap.close();
}
}
void fnOdczyt(char *Nazwa = "osoby.txt") {
ifstream plik_odcz;
plik_odcz.open(Nazwa);
if (!plik_odcz) {
cerr << "\nBRAK PLIKU: " << Nazwa << endl;
} else {
cout << "Odczytuje z pliku:\n";
cout << plik_odcz.rdbuf();
plik_odcz.close();
}
}
int main() {
char z;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);
while (1) {
cout << "\n==M===E===N===U===" << endl;
Sleep(100);
cout << "\n1 - Dodaj abonenta ksiazki" << endl;
Sleep(100);
cout << "\n2 - Znajdz abonenta" << endl;
Sleep(100);
cout << "\n3 - Usun abonenta ksiazki" << endl;
Sleep(100);
cout << "\n4 - Zapisz do pliku" << endl;
Sleep(100);
cout << "\n5 - Odczytytaj z pliku" << endl;
Sleep(100);
cout << "\nW - Wyjscie" << endl;
z = getch();
switch (z) {
case 'W': return EXIT_SUCCESS;
case 'w': return EXIT_SUCCESS;
case '1': Dodaj();break;
case '2': Znajdz();break;
case '3': Usun();break;
case '5': fnOdczyt(); break;
case '4': fnZapisz(); break;
}
}
system("PAUSE");
return EXIT_SUCCESS;
}