Visual Studio 2010 — C ++ Сохранить текстовый документ

Я работаю над своей игрой, и я могу легко сохранить свой текстовый документ, все работает отлично. У меня вопрос, как я могу сохранить текстовый документ в файл под названием «Сохраняет». Вот мой код

Также! Я получаю данные для имени 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();
}

2

Решение

Добавить к имени файла «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

1

Другие решения


По вопросам рекламы [email protected]