Skocz do zawartości

Zapis i odczyt


Rekomendowane odpowiedzi

Opublikowano

Witam ponownie :)

 

Mam problem posluguje sie przykladem Zawieja (tylko do celow edukacyjnych zeby nie bylo :D ) i jak raz zapisze notatke to sie ona pokazuje, ale chcialbym zrobic tak zeby po napisaniu nowej notki poprzednia sie nie kasowala a zapisala pod stara..... Ma ktos jakies pomysly?? :D Ponizej dla przypomnienia kod Zawieja ® ;)

 

#include <iostream>
#include <fstream>
#include <string>

/*
  Program: Pamietnik
  Autor: Zawiej
*/

using namespace std;

int main()
{
    struct dane
    {
           char data[35], notatka[35], podpis[10];
    } w;
    
    int wybor;
    string linia, zawartosc;

poczatek:
         cout<<" ########################\n";
         cout<<" # Pamietnik            #\n";
         cout<<" ########################\n\n";

         cout<<" 1. Dodaj notatke\n";
         cout<<" 2. Wczytaj notatke\n";
         cout<<" 3. Exit\n";
         cin>>wybor;
         cin.ignore();
        
switch (wybor)
{
       case 1:
            goto dodaj;
            break;
       case 2:
            goto wczytaj;
            break;
       case 3:
            goto koniec;
            break;
       default:
            cout<<" Wybrales numer z poza zakresu dostepnych";
            getchar();
            goto poczatek;
}

dodaj:
{
      system("cls");
      ofstream plik;
      plik.open("pamietnik.txt");
      cout<<" Podaj date: \n";
      cin>>w.data;
      cin.ignore();
      plik<<"######################\n";
      plik<<"# Data: "<<w.data<<"\n";
      cout<<" Podaj twoja notatke: \n";
      cin>>w.notatka;
      cin.ignore();
      plik<<"# Notatka:                                                                            "<<w.notatka<<"\n";
      cout<<"  Podpis: \n";
      cin>>w.notatka;
      cin.ignore();
      plik<<"# Podpis: "<<w.podpis<<"\n";
      plik.close();
      getchar();
      system("cls");
      goto poczatek;
}
wczytaj:
{
        ifstream plik;
        plik.open("pamietnik.txt");
        if (!plik.is_open())
        throw-1;
        while (getline(plik, linia))
        {
        zawartosc+=linia + "\n";
        }
        cout<<zawartosc;
        plik.close();
        getchar();
        system("cls");
        goto poczatek;
}
koniec:     
       system("PAUSE");
       return 0;
}

P.S

Zawiej to uzytkownik innego forum :D

Opublikowano

Eh, ale to przecież będzie w jednym pliku, nie? :) Więc to będzie się sprowodzało do tego co napisałem.

Opublikowano

Tyle ze to kompletnie nie zadziala bo jesli tak, to musialbym zrobic zeby zapisalo sie to pod STARĄ notatką a nie nadpisywalo..... Abysmy sie lepiej zrozumiali moze zaprezenutj to w kodzie :)

Opublikowano

Heh, nie chce mi się kodu teraz pisać :P Ale w punktach:

1. Wczytaj całą zawartość pliku do zmiennej.

2. Dopisz do zmiennej nową notkę.

3. Zapisz wszystko do pliku.

Jednak i tak to rozwiązanie uważam za niewydajne.

Opublikowano

O ludzie, o ludzie.

 

#include <iostream>
#include <fstream>
#include <string>

/*
  Program: Pamietnik
  Autor: Zawiej
*/

using namespace std;

int main()
{
    struct dane
    {
           char data[35], notatka[35], podpis[10];
    } w;
    
    int wybor;
    string linia, zawartosc;

poczatek:
         cout<<" ########################\n";
         cout<<" # Pamietnik            #\n";
         cout<<" ########################\n\n";

         cout<<" 1. Dodaj notatke\n";
         cout<<" 2. Wczytaj notatke\n";
         cout<<" 3. Exit\n";
         cin>>wybor;
         cin.ignore();
        
switch (wybor)
{
       case 1:
            goto dodaj;
            break;
       case 2:
            goto wczytaj;
            break;
       case 3:
            goto koniec;
            break;
       default:
            cout<<" Wybrales numer z poza zakresu dostepnych";
            getchar();
            goto poczatek;
}

dodaj:
{
      ifstream plik;
      plik.open("pamietnik.txt");
      zawartosc = "";
      if (!plik.is_open())
      throw-1;
      while (getline(plik, linia))
      {
        zawartosc+=linia + "\n";
      }
      plik.close();
        
      system("cls");
      ofstream plikOpen;
      plikOpen.open("pamietnik.txt");
      plikOpen<<zawartosc;
      cout<<" Podaj date: \n";
      cin>>w.data;
      cin.ignore();
      plikOpen<<"######################\n";
      plikOpen<<"# Data: "<<w.data<<"\n";
      cout<<" Podaj twoja notatke: \n";
      cin>>w.notatka;
      cin.ignore();
      plikOpen<<"# Notatka:                                                                            "<<w.notatka<<"\n";
      cout<<"  Podpis: \n";
      cin>>w.notatka;
      cin.ignore();
      plikOpen<<"# Podpis: "<<w.podpis<<"\n";
      plik.close();
      getchar();
      system("cls");
      goto poczatek;
}
wczytaj:
{
        ifstream plik;
        plik.open("pamietnik.txt");
        zawartosc = "";
        if (!plik.is_open())
        throw-1;
        while (getline(plik, linia))
        {
        zawartosc+=linia + "\n";
        }
        cout<<zawartosc;
        plik.close();
        getchar();
        system("cls");
        goto poczatek;
}
koniec:    
       system("PAUSE");
       return 0;
}

Zrobiłem to tak na bezczelnego, więc nadaje się do poprawy xP

Opublikowano

Nie chce zakladac nowego tematu a potrzebuje tych danych otóz czy jest jakiś skrypt powodujący Wylaczenie/Zresetowanie komputera??

 

P.S

Sorki za moje pytania, mam nadzije ze wybaczycie ;)

Opublikowano

Dalem tak i nic :(

 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
ExitWindowsEx (EWX_REBOOT | EWX_FORCE, 0);
keybd_event(VK_MENU,0x38,0,0);
keybd_event(VK_RETURN,0x1c,0,0);
keybd_event(VK_RETURN,0x1c,KEYEVENTF_KEYUP,0);
keybd_event(VK_MENU,0x38,KEYEVENTF_KEYUP,0);

  • Filar Społeczności
Opublikowano

A ja jeszcze powrócę do problemu z pierwszego tematu. Otóż Tymon podał rozwiązanie, którego tak naprawdę nie powinno się stosować. Po to można otwierać pliki w trybie APPEND by właśnie dodawać zawartość bez utraty poprzedniej.

Opublikowano
WinExec("tsshutdn 0 /POWERDOWN /DELAY:0", SW_HIDE);

- mi to zawsze pomagało (wyłącza system), ale to jest w winapi :boxed:

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...