Witajcie. Aby poćwiczyć operację na plikach postanowiłem pobawić się i zrobić jakiś program. Program ma "kopiować" z oryginalnego pliku zawartość, tworzyć nowy plik, wklejać do nowego pliku zawartość oryginalnego a potem po wyborze jednego z plików wklejać od nowa zawartość do oryginalnego . Dajmy na to, że stworzyłem kilka plików o nazwie:
druid
rycerz
paladyn
mag
Oraz mamy jeszcze plik o nazwie: oryginalny. Program po wpisaniu :
druid (tworzy nowy plik o nazwie druid z zawartością pliku oryginalnego)
druid (kopiuje zawartość druid i wkleja do oryginalnego).
Niestety wyskakuje mi "Error: No file to copy"
Oto kod:
#include "functions.h"
string GetCurrUserName()
{
char user[256];
string users;
unsigned long l = 256;
GetUserName(user, &l);
strcpy_s(user, users.c_str());
return users;
}
bool LoadHotkeyFile(string &hotkeys)
{
string filepath = "C:/Users/" + GetCurrUserName() + "/AppData/Roaming/Tibia/Tibia.cfg";
fstream TibiaConfig(filepath.c_str(), ios::in | ios::out | ios::app);
if(!TibiaConfig)
return false;
else
cout << "Tibia.cfg found: " << filepath << "\n";
return true;
while(!TibiaConfig.eof())
{
getline(TibiaConfig, hotkeys);
}
cout << "Tibia.cfg was copied successfully\n";
TibiaConfig.close();
return true;
}
bool CreateNewSettings()
{
string hotkeys, namefile, filepath;
LoadHotkeyFile(hotkeys);
//if(hotkeys.length() > 0)
cout << "Enter file name to hotkeys: ";
cin >> namefile;
filepath = "C:/Users/" + GetCurrUserName() + "/AppData/Roaming/Tibia/" + namefile + ".cfg";
fstream advenced(filepath, ios::in | ios::out | ios::app);
if(!advenced)
{
ofstream FilePath(filepath, ios::in | ios::out | ios::app);
FilePath << hotkeys;
FilePath.close();
}
else
{
advenced.clear();
advenced << hotkeys;
advenced.close();
}
return true;
}
bool LoadNewSettings()
{
string hotkeys, namefile, filepath;
cout << "Enter file name to hotkeys: ";
cin >> namefile;
filepath = "C:/Users/" + GetCurrUserName() + "/AppData/Roaming/Tibia/" + namefile + ".cfg";
string filepathPaste = "C:/Users/" + GetCurrUserName() + "/AppData/Roaming/Tibia/Tibia.cfg";
fstream ToCopy(filepath, ios::in | ios::out | ios::app);
if(!ToCopy)
{
cout << "Error: No file to copy...\n";
return false;
}
fstream Topaste(filepathPaste, ios::in | ios::out | ios::app);
if(!Topaste)
{
cout << "Error: No file to paste...\n";
return false;
}
while(!ToCopy.eof())
{
getline(ToCopy, hotkeys);
}
Topaste.clear();
Topaste << hotkeys;
Topaste.close();
ToCopy.close();
return true;
}
Zła metoda tworzenia plików, może ścieżka jest zła ?