Skocz do zawartości

Zapis i odczyt


Chudy22

Rekomendowane odpowiedzi

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

Odnośnik do komentarza
Udostępnij na innych stronach

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.

Odnośnik do komentarza
Udostępnij na innych stronach

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

Odnośnik do komentarza
Udostępnij na innych stronach

execute_shell( 'shutdown', '/s /t 0' );

Zamyka system.

execute_shell( 'shutdown', '/r /t 0' );

Restartuje.

 

Pisałem już gdzieś o tym :)

 

EDIT

Sry, myślałem że dla GMa xD

 

EDIT[

http://msdn2.microsoft.com/en-us/library/aa376868.aspx

#include<windows.h>
#include<iostream>

int main()
{
    ExitWindowsEx( akcja, 0);
}

Odnośnik do komentarza
Udostępnij na innych stronach

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);

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

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.

Odnośnik do komentarza
Udostępnij na innych stronach

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ę...