Vkladani dat do souboru, ale bez premazavani souboru! – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vkladani dat do souboru, ale bez premazavani souboru! – C / C++ – Fórum – Programujte.comVkladani dat do souboru, ale bez premazavani souboru! – C / C++ – Fórum – Programujte.com

 

Hanz.S0
Návštěvník
7. 10. 2008   #1
-
0
-

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

//------------------------------------------------------------------------------

int main() {

cout << "------------------------------------------------\n";

cout << "|Vitejte v programu pro zapisovani zamestnancu |\n";

cout << "------------------------------------------------\n";

//Vypsani "int"

int zacatek = 0;

int pass;

int id;

int status;

int addzam=0;

int nazevsouboru;

int vek;

char str[128];

char jmeno[20];

char prace[20];


//------------------------------------------------------------------------------

do {

if ( zacatek )
{

cout << "zadali jste nespravne udaje \n";

}



cout << "Prihlaste se:\n\n";




cout << "ID: ";

if ( !( cin >> id) ) { cin.clear(); cin >> str; }

cin.get();



cout << "PASSWORD: ";

if ( !( cin >> pass) ) { cin.clear(); cin >> str; }

cin.get();



zacatek = 1;

}

while (pass != 1409 || id != 1409);

cout << "Prihlasili jste se, nacitam data!\n\n";

ifstream Zamstatus ("Zamestnanci.txt");

cout << "Prejete si zobrazit aktualni status vsech pridanych zamestnancu?\n 1 = ano / 2 = ne\n";

cin >> status;

if (status == 1)
{

cout << Zamstatus <<endl;

}

cin.get();

cout << "Prejete si pridat zamestnance?\n 1 = ano / 2 = ne\n";

cin >> addzam;

if (addzam == 1)
{

cout << "Zadejte udaje zamestnance: \n";

cout << "Zadejte jmeno zamestnance: " << jmeno;

cout << "Zadejte vek zamestnance: " << vek;

cout << "Zadejte napln prace zamestnance:" << prace;

}

cin.get();


cout << "Prejete si zalohovat soubor s priponou .txt vsech pridanych zamestnancu?\n 1 = ano / 2 = ne\n";

ofstream Zamestnanci ("Zamestnanci.txt");

cin >> nazevsouboru;

if (nazevsouboru ==1)
{

Zamestnanci << nazevsouboru;

}

cin.get();

return 0;

}

Ahoj, tady ten kod slouzi k pridani zamestnance, nasledny vypis (neni hotov) a nasledne zalohovani dat do souboru.txt . Take se z neho budou nacitat data, ktera pujdou zobrazit. Mojim problemem je dnes to, jak pridat do souboru.txt nejaka data, pokud pridam noveho zamestnance anichz bych premazal stary soubor zamestnanci.txt se starymi zamestnanci (tzn. ze se budou stale a stale pridavat) diky

Nahlásit jako SPAM
IP: 85.71.205.–
Programuju, protoze me to bavi. Beru to vazne a chci se to naucit. Proto kazdy vas prispevek mi je pomocnym.
Hanz.S0
Návštěvník
7. 10. 2008   #2
-
0
-

Navic pokud mam soubor zamestnanci.txt hotov a je v nem cokoli, momentalne:

------------- Zamestnanec --------------
Jmeno: Michal Novak
Vek: 19 let
Prace: Sprava site, Administrator
----------------------------------------

tak se mi pri pozadavku na zobrazeni zamestnancu zobrazi
0x22fdf4

nevite jak s tim pryc?

Nahlásit jako SPAM
IP: 85.71.205.–
Programuju, protoze me to bavi. Beru to vazne a chci se to naucit. Proto kazdy vas prispevek mi je pomocnym.
Matrix17
~ Anonymní uživatel
300 příspěvků
7. 10. 2008   #3
-
0
-

To Hanz.S : Na začátek trocha kritiky: Ty si otevřeš soubor ale už ho nezavíráš! Potom mi trochu uniká smysl tohohle:



cin >> nazevsouboru;

if (nazevsouboru ==1)
{
Zamestnanci << nazevsouboru;
}

Ale hádám, že tam někdy v budoucnu bude opravdové zálohování takže budiž (bylo by dobrý zálohovat do jinýho souboru). Špatnej nápad by nebyl testovat jestli se soubor vůbec otevřel ale to je jenom rada. A teď už k tvému dotazu. Pro to abys mohl do souboru něco přidat je nutné si otevřít soubor pro přípis. Tady najdeš info i s příkladem jak na to:
[url]
http://www.cplusplus.com/reference/iostream/fstream/open.html
[/url]

Nahlásit jako SPAM
IP: 90.176.235.–
Hanz.S0
Návštěvník
8. 10. 2008   #4
-
0
-

http://www.cplusplus.com/reference/iostream/fstream/open.html

Jasny, dekan! Jo, ja jsem vazne amater a ucim se vse co mohu a to nejlepe tak, ze si stahnu scripty jinych a koukam proc je to tak a pak si to tvorim stylem pokus (aha, tak je to takto) / omyl.

Nahlásit jako SPAM
IP: 85.71.205.–
Programuju, protoze me to bavi. Beru to vazne a chci se to naucit. Proto kazdy vas prispevek mi je pomocnym.
KIIV
~ Moderátor
+43
God of flame
8. 10. 2008   #5
-
0
-

lepsi forma je stahnout si neco od cizich ale analyzovat co je co ... co je to za funkci co dela a nakonec co dela celej script

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Hanz.S0
Návštěvník
8. 10. 2008   #6
-
0
-

Mam takovej problem a vubec tomu nerozumim

// fstream::open
#include <fstream>
using namespace std;

int main () {


void open ( const char * filename, ios_base::openmode mode = ios_base::in | ios_base::out );

fstream filestr;

filestr.open ("test.txt", fstream::in | fstream::out | fstream::app);

// >> i/o operations here <<
// tady bych mel dat asi neco jako cout <<"text" << "endl" ale kontrolor to neveme

filestr.close();

return 0;
}

Vubec nechapu, jak udelat to, abych vlozil text do souboru, nechapu to poradite mi? JInak ten soubor test.txt mam vytvoreny ve stejny slozce jako mam soubor test.ccp a test.exe

Nahlásit jako SPAM
IP: 85.71.205.–
Programuju, protoze me to bavi. Beru to vazne a chci se to naucit. Proto kazdy vas prispevek mi je pomocnym.
Matrix17
~ Anonymní uživatel
300 příspěvků
8. 10. 2008   #7
-
0
-

Pokud používáš streamy tak se k nim přistupuje stejně jako k objektu cout. Tudíž by měl fungovat takovýto zápis do souboru:



fstream filestr;
filestr.open ("test.txt", fstream::out | fstream::app);

filestr << "Livovolny text " << 23 << endl;
int ddd = 2;
filestr << ddd << endl;

filestr.close();

Tohle by mělo zapsat do souboru řetězec mezeru číslo odřádkovat a zapsat číslo a odřádkovat. Nechápu proč máš definovanou tu funkci open uvnitř main?

Nahlásit jako SPAM
IP: 90.176.235.–
Hanz.S0
Návštěvník
8. 10. 2008   #8
-
0
-

ha, díky moc. Funguje.

a tohle je jen čistej dokument, já se to učím, já to neumím a chci to vložit do dalšího kódu.

Nahlásit jako SPAM
IP: 85.71.205.–
Programuju, protoze me to bavi. Beru to vazne a chci se to naucit. Proto kazdy vas prispevek mi je pomocnym.
Hanz.S0
Návštěvník
9. 10. 2008   #9
-
0
-

// fstream::open
#include <fstream>
#include <iostream>
#include <iomanip>
using namespace std;

int main () {

cout << "------------------------------------------------\n";

cout << "|Vitejte v programu pro zapisovani zamestnancu |\n";

cout << "------------------------------------------------\n";

fstream filestr;

filestr.open ("test.txt", fstream::out | fstream::app);

cout << "\n- INFO -\n";

cout << "Tento program slouzi k zapisovani zamestnancu\n";

cout << "do textoveho souboru, ktery najdete ve stejne\n";

cout << "slozce, v ktere jste spustili tento program.\n";

cout << "\nU jmen piste pouze pismena, u veku pouze\n";

cout << "cislice a u naplne prace piste bez mezer\n";

cout << "oddelujte carkami. Pri zapisovani datumu\n";

cout << "piste nasledovne: den: 21, mesic: ledna, rok: 2008.\n";

cout << "Cas piste pouze v hodinach, napriklad 17 nebo 1730 (17:30).\n";

cout << "\nDekujeme za vasi prizen.\n";

cout << "\n----------- ZAPIS NOVEHO ZAMESTNANCE -----------\n";

char krestni_jmeno[12];

cout << "Krestni jmeno: ";

cin >> krestni_jmeno;

char prijmeni[30];

cout << "Prijmeni: ";

cin >> prijmeni;

double vek;

cout << "Vek: ";

cin >> vek;

char prace[30];

cout << "Napln prace: ";

cin >> prace;

double datum_den;

cout << "Vypis datumu: \n";

cout << "Den: ";

cin >> datum_den;

char datum_mesic[10];

cout << "Mesic: ";

cin >> datum_mesic;

int datum_rok;

cout << "Rok: ";

cin >> datum_rok;

double cas;

cout << "Zadejte cas pridavani: ";

cin >> cas;

cout << "\n\n Zamestnanec byl zapsan do souboru s priponou .txt";

cin.get();

filestr << "----------- ZAMESTNANEC -----------" << endl;

filestr << "Krestni jmeno: " << krestni_jmeno << endl;

filestr << "Prijmeni: " << prijmeni << endl;

filestr << "Vek: " << vek << endl;

filestr << "Napln prace: " << prace << endl;

filestr << "Zamestnanec byl zapsan dne " << datum_den;

filestr << ". " << datum_mesic;

filestr << " roku " << datum_rok;

filestr << " v " << cas << "hodin." << endl;

filestr.close();

cin.get();

return 0;
}

Nazdar, toto je plne funkcni kod! Funguje, ale mam problem. Chtel bych, aby se uzivatel, ktery spusti tento program vratil na zacatek a mohl pridat dalsiho zamestnance. Hlavne, aby to nedelal problem a nevynechalo to filestr, aby se zapsal dalsi zamestnanec. Nechci to delat pres goto MENU! Diky za odpoved!

Nahlásit jako SPAM
IP: 85.71.205.–
Programuju, protoze me to bavi. Beru to vazne a chci se to naucit. Proto kazdy vas prispevek mi je pomocnym.
KIIV
~ Moderátor
+43
God of flame
9. 10. 2008   #10
-
0
-

pouzij do while cyklus

Nahlásit jako SPAM
IP: 80.250.27.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Hanz.S0
Návštěvník
9. 10. 2008   #11
-
0
-

No jo, ale jakym prikazem se vratim na zacatek, ikdyz pouziju do i while!

Nahlásit jako SPAM
IP: 85.71.205.–
Programuju, protoze me to bavi. Beru to vazne a chci se to naucit. Proto kazdy vas prispevek mi je pomocnym.
KIIV
~ Moderátor
+43
God of flame
9. 10. 2008   #12
-
0
-

zadnym... kdyz je podminka u while splnena tak se vrati na zacatek cyklu tudiz na do

Nahlásit jako SPAM
IP: 80.250.27.–
Program vždy dělá to co naprogramujete, ne to co chcete...
luky
~ Anonymní uživatel
25 příspěvků
11. 10. 2008   #13
-
0
-

"Databaze" v textovych souborech s promenlivou delkou radku/zaznamu jsou cesta do pekel :smile1: Schvalne zkus vymyslet, jak bys s takovymi daty dale operoval, kdybys chtel delat i neco jineho nez jen pridavani na konec (treba oprava udaju).

Kazdopadne ale zkus nejakou knihu nebo tutorial k jazyku. Narazeni na jednotlive konstrukce a nasledne dohledavani jejich funkce je hodne pomaly postup (viz do-while vyse). Prece nebudes jezdit na trikolce jen proto, ze jsi u souseda jeste nevidel kolobezku.

Nahlásit jako SPAM
IP: 213.211.51.–
Hanz.S0
Návštěvník
12. 10. 2008   #14
-
0
-

Luky, opravdu si nebudu kupovat mistrovstvi v c++ za 1000kc. To je proste moc a v knihovne to ani nekoupi, hlavne, ze tam maji knihy z roku 97 na tema C++.

Nahlásit jako SPAM
IP: 85.71.205.–
Programuju, protoze me to bavi. Beru to vazne a chci se to naucit. Proto kazdy vas prispevek mi je pomocnym.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 106 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý