我一直在处理我的游戏,我可以轻松保存我的文本文档,一切都很完美。我的问题是,如何将文本文档保存到名为"保存的文件中。"这是我的代码。
另外!我从
获取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");
我接受了你所说的关于使用字符串的内容,但它没有创建文件,我收到了“保存失败,主要问题”错误。
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();
}
答案 0 :(得分:1)
在文件名前加上&#34;保存/&#34;
char* newArray = new char[strlen("Saves/")+strlen(name)+strlen(".asciip")+1];
strcpy(newArray,"Saves/");
strcat(newArray,name);
strcat(newArray,".asciip");
std :: string类也用于存储和操作字符串。比C字符串更容易使用,更容易出错。 Info on string.
编辑: 你的第一段代码
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