• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Tworzenie wielu plików w jednym programie

Object Storage Arubacloud
+1 głos
504 wizyt
pytanie zadane 9 sierpnia 2015 w C i C++ przez brtkae Początkujący (250 p.)

Cześć, chciałem sobie zrobić program, który pobiera dane na temat auta i zapisuje w pliku. Lecz mój program zapisuje wszystkie informacje w jednym pliku, a chciałbym żeby po każdym restarcie programu tworzyło inny plik, np. odpalam aplikacje, wpisuje dane, zamykam i tworzy się plik auto1.txt, potem robie to samo, tylko że już w pliku auto2.txt.

#include <iostream>
#include <fstream>
using namespace std;

class Samochod
{
    public:
    int cena;
    int przebieg;
    string marka;
    string model;
    int rocznik;
    void dodawanie_auta()
    {
       cout<<"DODAWANIE NOWEGO AUTA DO BAZY"<<endl;
       cout<<"============================="<<endl;
       cout<<"MARKA :";
       cin>>marka;
       cout<<"MODEL :";
       cin>>model;
       cout<<"ROCZNIK: ";
       cin>>rocznik;
       cout<<"PRZEBIEG: ";
       cin>>przebieg;
       cout<<"CENA: ";
       cin>>cena;



      fstream plik;
      plik.open("auto.txt",ios::out | ios::app);
      plik<<marka<<endl;
      plik<<model<<endl;
      plik<<rocznik<<cout<<" r."<<endl;
      plik<<przebieg<<cout<<" km"<<endl;
      plik<<cena<<cout<<" euro"<<endl;
      plik.close();
}



};


int main()
{
    Samochod s1;
    s1.dodawanie_auta();


    return 0;
}

 

2 odpowiedzi

+2 głosów
odpowiedź 9 sierpnia 2015 przez Wiciorny Ekspert (270,870 p.)

Po pierwsze przy każdym uruchomieniu programu 

 plik.open("auto.txt",ios::out | ios::app);

  otwierasz ten sam plik... i umożliwiasz dopisywanie. 

:) 

http://cpp0x.pl/kursy/Kurs-C++/Obsluga-plikow/305 skorzystaj  z użycia " utwóż jeżeli plik nie istnieje " 

Kod (Text):
FILE *plik;
char nazwa[256]; 
scanf("%s",&nazwa);
plik = fopen(nazwa, "w");
....
fclose(plik);

 

to Ci może pomóc! A co robi ten kod? Tworzy plik... o nazwie podanej przez użytkownika :) więc nie otwiera Ci pliku który już istnieje, posłuż się tym do kombinowania  :) wtedy otwierasz plik o nazwie " której podał użytkownik na starcie" i tworzą się w ten sposób nowe pliki 

 

komentarz 9 sierpnia 2015 przez adrian17 Ekspert (345,160 p.)
Przykład z fopen jest raczej niepotrzebny, w końcu dokładnie to samo można zrobić z fstreamami.
+1 głos
odpowiedź 9 sierpnia 2015 przez Patrycjerz Mędrzec (192,320 p.)

Zrób sobie plik, który będzie przechowywał, który raz tworzysz plik, a potem dzięki tym informacją generujesz nowe nazwy plików (manipulujesz stringiem). Później tego stringa dajesz jako argument do metody open i po problemie wink

komentarz 9 sierpnia 2015 przez Patrycjerz Mędrzec (192,320 p.)

Jeśli przy generowaniu nazw będziesz korzystać z inta, to radzę przekonwertować go do stringa i dodać do nazwy pliku. Możesz to zrobić na wiele sposobów: http://4programmers.net/C/Konwersje_int_na_string_i_string_na_int.

komentarz 9 sierpnia 2015 przez brtkae Początkujący (250 p.)
Możesz trochę jaśniej? Jestem początkujący w c++. :D
komentarz 9 sierpnia 2015 przez Patrycjerz Mędrzec (192,320 p.)

Co w tym trudnego do zrozumienia? Jeśli chcesz mieć nazwy plików kolejno ze zwiększającą się liczbą, np. auto1.txtauto2.txt... to musisz generować nazwy plików (chyba nie wprowadzać ręcznie wink). W tym celu musisz zrobić fragment kodu, który te nazwy stworzy. Aby wiedzieć, który plik z kolei ma być stworzony, to potrzebujesz danych z innego pliku o tym, ile plików zostało już zrobionych. Potem tylko transformujesz inta na stringa (liczbę na napis) i dodajesz liczbę do wzorca auto[tutaj dodajesz liczbę].txt za pomocą metod, które podałem w komentarzu.

komentarz 9 sierpnia 2015 przez Patrycjerz Mędrzec (192,320 p.)
A, właśnie, aby było jasne - napisy można dodawać.
komentarz 9 sierpnia 2015 przez brtkae Początkujący (250 p.)
Okej, rozumiem. Dzięki :)

Podobne pytania

0 głosów
1 odpowiedź 457 wizyt
+1 głos
3 odpowiedzi 261 wizyt
pytanie zadane 26 maja 2021 w C i C++ przez Domika Nowicjusz (200 p.)
0 głosów
0 odpowiedzi 79 wizyt
pytanie zadane 27 lutego 2019 w C i C++ przez bartekUW Początkujący (360 p.)

92,631 zapytań

141,495 odpowiedzi

319,863 komentarzy

62,011 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...