Mohli by ste mi někdo poradit příkaz na kopírování souborů nebo odkaz na návod. Dík.
Fórum › C / C++
Kopírování souboru v c++
PetrZ napsal:
Mohli by ste mi někdo poradit příkaz na kopírování souborů nebo odkaz na návod. Dík.
Predpokladam, ze to pises v C/C++.
Cili je nutne si vytvorit dva ukazatele na soubory - jeden pro cteni, druhy pro zapis.
FILE *fr=0, *fw = 0;
Nyni prichazi na radu otevreni souboru. C/C++ poskytuje otevreni souboru bud v rezimu binarnim nebo textovem(jaky je mezi nimi rozdil vysvetlovat nebudu). Ja jsem se rozhodl pro binarni. Vzapeti se dozvis proc.
fr = fopen(nazev_zdrojoveho_souboru, "rb");
fw = fopen(nazev_ciloveho_souboru, "wb");
// nezbytne kontroly
Tak a ted objasnim, proc jsem zvolil binarni rezim. Udelal jsem to jen proto, ze si nactu veskery obsah souboru do pameti. Samozrejme predpokladam male soubory(jak asi uznas tak pro velke soubory to bude nevhodne a bylo by dobre to ukladat po castech), kvuli jednoduchosti. A postup je nasledujici
1)Zjistim delku souboru
2) alokuju buffer pro data
3) prectu data
4) zapisu data
5) uvolnim pamet
6) uzavru oba soubory
7) mam hotovo a muzu si uzivat
takze si to shrnme a kod muze vypdat treba takto:
#include <cstdlib>
#include <iostream>
using namespace std;
bool filecpy(const char *dest, const char* src)
{
FILE *fr = fopen(src, "rb"), *fw = fopen(dest, "wb");
if(!fr || !fw) return false;
fseek(fr, 0, SEEK_END); // presune ukazatel na konec souboru
long lSize = ftell(fr); // vrati pozici ukazatele
rewind(fr); // presune ukazatel v souboru na zacatek
char * buffer = new char[lSize];
if (!buffer) {fclose(fr);fclose(fw); return false;}
fread(buffer, 1, lSize, fr);
buffer[lSize]= 0;
fwrite(buffer, 1, lSize, fw);
fclose(fr);
fclose(fw);
delete [] buffer;
return true;
}
int main(int argc, char *argv[])
{
if(!filecpy("xxx.txt", "main.cpp")) // vytvori kopii souboru main.cpp s nazvem xxx.txt
cerr << "Chyba" << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
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žení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 92 hostů
Podobná vlákna
Kopírování souborů z CD — založil Sebix
Kopirovani souboru — založil Jerremy09
Kopirovaní souboru — založil Vasil
Kopírování souboru — založil Šmíd
Kopírování souborů — založil KarelN
Moderátoři diskuze