Я сделал текстовое приключение с возможностью загрузки / сохранения.
В папке я создал игру, она работала нормально. И даже если я делаю релизную версию своей игры, все работает так, как должно.
Но я должен передать этот проект своему профессору.
На моем ПК сохранение и загрузка работают нормально, но на моем ноутбуке или в копии моей папки проекта я получаю сообщение об ошибке «переполнение буфера произошло».
Так в чем здесь моя вина?
Мой код для загрузки / сохранения:
bool save()
{
char sFileText[1024];
char sFileName[80];
char sFileDirectory[80];
GetCurrentDirectory(512, sFileDirectory);
sprintf(sFileName, "%s\\save_game.ini", sFileDirectory);
sprintf(sFileText, "[settings]\n\rsp_loop=%i\n\rroom_iSelect=%i\n\riSelect=%i\n\rraum=%i\n\rtor402=%i\n\rwegiSelect=%i\n\rwegweiser=%i\n\rlight=%i\n\ropen_door=%i\n\rmesser=%i\n\rmesserwurf=%i\n\rkamera=%i\n\rstein=%i\n\ralive=%i\n\rpfeil=%i\n\rluke=%i\n\rkuehlschrank=%i\n\rpulver_schmand=%i\n\rteddy=%i\n\rseil=%i\n\rgiftklinge=%i\n\r",
sp_loop,
room_iSelect,
iSelect,
raum,
tor402,
wegiSelect,
wegweiser,
light,
open_door,
messer,
messerwurf,
kamera,
stein,
alive,
pfeil,
luke,
kuehlschrank,
pulver_schmand,
teddy,
seil,
giftklinge
);
int cur_char;
FILE *out_file;
out_file = fopen(sFileName, "w");
if (!out_file == NULL)
{
for (cur_char = 0; cur_char < strlen(sFileText); ++cur_char)
{
fputc(sFileText[cur_char], out_file);
}
}
else
{
return false;
}
fclose(out_file);
return true;
}
bool open()
{
char sFileText[1024];
char sFileName[12];
char sFileGameSettingsIni[80];
sprintf(sFileName, "save_game.ini");
GetCurrentDirectory(512, sFileGameSettingsIni);
sprintf(sFileGameSettingsIni, "%s\\%s", sFileGameSettingsIni, sFileName);
sp_loop = GetPrivateProfileInt("settings", "sp_loop", 512, sFileGameSettingsIni);
raum = GetPrivateProfileInt("settings", "raum", 512, sFileGameSettingsIni);
tor402 = GetPrivateProfileInt("settings", "tor402",512, sFileGameSettingsIni);
wegiSelect = GetPrivateProfileInt("settings", "wegiSelect", 512, sFileGameSettingsIni);
wegweiser = GetPrivateProfileInt("settings", "wegweiser", 512, sFileGameSettingsIni);
light = GetPrivateProfileInt("settings", "light", 512, sFileGameSettingsIni);
open_door = GetPrivateProfileInt("settings", "open_door",512, sFileGameSettingsIni);
messer = GetPrivateProfileInt("settings", "messer", 512, sFileGameSettingsIni);
messerwurf = GetPrivateProfileInt("settings", "messerwurf", 512, sFileGameSettingsIni);
kamera = GetPrivateProfileInt("settings", "kamera", 512, sFileGameSettingsIni);
stein = GetPrivateProfileInt("settings", "stein", 512,sFileGameSettingsIni);
alive = GetPrivateProfileInt("settings", "alive", 512,sFileGameSettingsIni);
pfeil = GetPrivateProfileInt("settings", "pfeil", 512, sFileGameSettingsIni);
luke = GetPrivateProfileInt("settings", "luke", 512, sFileGameSettingsIni);
kuehlschrank = GetPrivateProfileInt("settings", "kuehlschrank", 512, sFileGameSettingsIni);
pulver_schmand = GetPrivateProfileInt("settings", "pulver_schmand", 512, sFileGameSettingsIni);
teddy = GetPrivateProfileInt("settings", "teddy", 512, sFileGameSettingsIni);
seil = GetPrivateProfileInt("settings", "seil", 512, sFileGameSettingsIni);
giftklinge = GetPrivateProfileInt("settings", "giftklinge",512, sFileGameSettingsIni);
return true;
}