Я работаю над своей игрой, и я могу легко сохранить свой текстовый документ, все работает отлично. У меня вопрос, как я могу сохранить текстовый документ в файл под названием «Сохраняет». Вот мой код
Также! Я получаю данные для имени char * от
Save(gets(new char [50]));
Почему этот код не работает прямо здесь?
char* newArray = new char[strlen("PaintAPicture/")+strlen("Saves/")+strlen(name)+strlen(".asciip")+1];
strcpy(newArray,"PaintAPicture/");
strcpy(newArray,"Saves/");
strcpy(newArray,name);
strcat(newArray,".asciip");
Я взял то, что вы сказали об использовании строки, но это не создает файл, и я получаю ошибку Saving Failed, Main Problem.
if(saveFile)
{
system("cls");
string prename;
cout << "Enter level's number: ";
cin >> prename;
string name = "Files/" + "Saves/" + prename + ".asciip";
ofstream out(name, ios::binary);
if (!out.is_open()){ MessageBox( 0, "Saving failed! Main problem.", 0, MB_ICONERROR); system("cls"); RedrawMap(); return 0; }
system("cls"); cout << "Saving...";system("cls");
ShowConsoleCursor(false);
cout << "Saving...";
Sleep(1000);
for(int i = 9; i < SizeY; i++)
{
for(int j = -1; j < SizeX; j++)
{
out << Map[i][j].ch << endl;
out << (int)Map[i][j].color << endl;
}
}
}
cout << '\a';
out.close();
}
Добавить к имени файла «Saves /»
char* newArray = new char[strlen("Saves/")+strlen(name)+strlen(".asciip")+1];
strcpy(newArray,"Saves/");
strcat(newArray,name);
strcat(newArray,".asciip");
Также класс std :: string предназначен для хранения и управления строками. Гораздо проще в использовании и намного менее подвержен ошибкам, чем C-строки. Информация о строке.
РЕДАКТИРОВАТЬ:
Ваш первый кусок кода
char* newArray = new char[strlen("PaintAPicture/")+strlen("Saves/")+strlen(name)+strlen(".asciip")+1];
strcpy(newArray,"PaintAPicture/");
strcpy(newArray,"Saves/");
strcpy(newArray,name);
strcat(newArray,".asciip");
не работает, потому что вы используете strcpy, где вы должны использовать strcat.
strcpy(newArray,"Saves/");
strcpy(newArray,name);
должно быть
strcat(newArray,"Saves/");
strcat(newArray,name);
Что касается проблемы с созданием файла, эти папки уже существуют? ofstream
может создавать новые файлы в указанной папке, но не может создавать новые папки. Увидеть https://stackoverflow.com/a/9089919/4761271