Práce se soubory – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Práce se soubory – C / C++ – Fórum – Programujte.comPráce se soubory – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Mike.Jt
~ Anonymní uživatel
6 příspěvků
15. 7. 2007   #1
-
0
-

hoj, naučil jsme se ukládat data do souboru ....

ofstream outline ("text.txt");


for(int i=1;i>0;i++) //nekonečná smyčka
{
outline << i << " ";
cout << i << " ";
}


A chtěl bych se zeptat na pár věcí:

1) když uložim data, a pak program znovu spustím tak se mi data přepíšou ? Jak mám udělat aby program zapsal nové data za ty staré ?
2) dá se nějak udělat aby program !!vytvořil!! soubor text.txt ?
3) Jak tenhle soubor přejmenovat, kopírovat, popřípadě smazat.

Ta odpovědi děkuju.

Ps: Stačí mi třeba odkaz na článek kde je tohle vysvětlený. !

Mike.jt

Ale zajímalo by mě, jestli se dá nějak udělat, aby sám program soubor text.txt vytvořil. A taky by mě zajímaly ostatní práce jako

Nahlásit jako SPAM
IP: ...–
Reklama
Reklama
Mike.Jt
~ Anonymní uživatel
6 příspěvků
15. 7. 2007   #2
-
0
-

pardon ta poslední řádka tam nepatří, zapoměl jsem jí vymazat.

Nahlásit jako SPAM
IP: ...–
frk
~ Anonymní uživatel
1 příspěvek
15. 7. 2007   #3
-
0
-

1)

fstream vstup;
vstup.open("nazev_souboru",ios_base::in);
if(!vstup) // ohlas chybu

2. parametr může být in (vstup), out (výstup), app (připsat na konec), ate (otevřít na konci), trunc (smazat), binary nebo jejich kombinace (např. in|out|binary). Tyto konstanty jsou definovány ve třídě ios_base.

Soubor se zavře automaticky při vyvolání destruktoru; je možno také explicitně vyvolat metodu close().


citováno z http://www.fi.muni.cz/usr/jkucera/pb161/sl9.htm

2) tak pokud soubor neexistuje tak se vytvori pri volani konstruktoru "automaticky"...

3) podle http://www.sallyx.org/sally/c/c34.php na mazani a prejmenovani slouzi funkce remove a rename, osobne jsem to nikdy nepouzil, takze nevim, jak to funguje. Ad kopirovani -- proste si otevres dva soubory (vstup, vystup) a z jednoho presypes data do druheho napr jako na http://www.linuxsoft.cz/article.php?id_article=899.

Nahlásit jako SPAM
IP: ...–
Pavel Synek0
Super člen
15. 7. 2007   #4
-
0
-

1) no jde o to v jakém módu otevřeš ten soubor. Ty módy jsou popsané na http://www.functionx.com/cpp/articles/filestreaming.htm

2)to samé, záleží na módu (já pro jednoduchý výpis kde se data pokaždé přemažou používám ios::out)

3)s tím přejmenováním a tak nevim, nikdy sem to neřešil, ale stačí trochu pogooglit
přejmenování: http://www.cplusplus.com/reference/clibrary/cstdio/rename.html
kopírovaní: nic kloudnýho to nenašlo, buď přes system() nebo soubor načítat a hned zapisovat
smazání: http://www.cplusplus.com/reference/clibrary/cstdio/remove.html

EDIT: hmm, někdo byl rychlejší...

Nahlásit jako SPAM
IP: ...–
Mike.Jt
~ Anonymní uživatel
6 příspěvků
16. 7. 2007   #5
-
0
-

moc dík, hned to ozkouším ;)

Nahlásit jako SPAM
IP: ...–
Mike.Jt
~ Anonymní uživatel
6 příspěvků
16. 7. 2007   #6
-
0
-

problém č. 1 úspěšně vyřešen ;)

#include <iostream>

#include <fstream>
#include <string>

using namespace std;

int main()
{


ofstream outline("text.txt",ios::app);
{
for(int i=1;i<100;i++)
{
outline << i << " ";
}
}

return 0;

}

Nahlásit jako SPAM
IP: ...–
Ivo
~ Anonymní uživatel
93 příspěvků
19. 7. 2007   #7
-
0
-

A proc nepouzivas FOPEN?

kompletni popis:
http://www.cplusplus.com/reference/clibrary/cstdio/fopen.html



priklad:








FILE *configFile=fopen("Settings.TXT","rt");

if(!configFile==NULL)
{
char szBuffer[2048];
//seek to the options section section
while (fgets(szBuffer, 2048, configFile) != NULL)
{
if(strstr(szBuffer,"[Passwords]"))
{
while (fgets(szBuffer, 2048, configFile) != NULL)
{
int iLen = strlen(szBuffer);
/* Strip CR LF and spaces in the end */
if (iLen)
do {
iLen--;
if ((szBuffer[iLen] == 0x0D) || (szBuffer[iLen] == 0x0A) || (szBuffer[iLen] == ' '))
szBuffer[iLen] = 0;
else
break;
} while (iLen);

if(strstr(szBuffer,"L1Psw="))
sprintf(m_szTieredAdmin[0],"%s",szBuffer+6);
else if (strstr(szBuffer,"L2Psw="))
sprintf(m_szTieredAdmin[1],"%s",szBuffer+6);

if(strlen(szBuffer)<2)
break;
}
}
}
fclose(configFile);
}









aby se soubor vytvoril pokud neexistuje:

""w" Create an empty file for writing. If a file with the same name already exists its content is erased and the file is treated as a new empty file."

Nahlásit jako SPAM
IP: ...–
neimenuje0
Návštěvník
22. 7. 2007   #8
-
0
-

To Ivo: V C++ je lepší používat streamy, nevím jestli je to rychlejší, ale asi stylovější =) ...dá se s tím snáž pracovat a otevření souboru přes fopen občas dělá bordel.

Nahlásit jako SPAM
IP: ...–
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, 241 hostů

Podobná vlákna

Práce se soubory — založil polonium

Práce se soubory — založil Polarski

Práce se soubory v C — založil Siggi

Práce se soubory — založil hejnallukas

Moderátoři diskuze

 

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