В чем главная ошибка этого кода?
В моем коде vc++ ,
Я хочу изменить имя ХХХ.000001.войдите в XXX.000002.журнал, ХХХ.000003.журнал.... применении CString.
struct idx_name{ char type[4]; char digit[6]; char ext[4]; } idx_name idx_logname; memset(&idx_logname, 0, sizeof(idx_logname)); // get the char fname[100]; = "xxx.000001.log" memcpy(&idx_logname, fname, sizeof(idx_logname)); CString s = CString(idx_logname.digit).GetBufferSetLength(6); int idx = _ttoi(s); idx++; ::ZeroMemory(&idx_logname.digit, sizeof(idx_logname.digit)); sprintf_s(idx_logname.digit, sizeof(idx_logname.digit), "%06d", idx); ::ZeroMemory(filename, sizeof(filename)); memcpy(filename, &idx_logname, sizeof(idx_logname)); // get Current_folder as current_directory CString folder = CString(Current_folder); s = folder + CString(filename);
Это не имеет ошибки компиляции.
Но во время выполнения процесс имеет запущенную ошибку в строке "sprintf_s", например
"Выражение: ("буфер слишком мал", 0);
Как новичок в VC++, пожалуйста, дайте мне знать об ошибке и кто знает простые способы изменения имен файлов?
Что я уже пробовал:
Один день потрачен впустую на эту проблему.
Richard MacCutchan
Один день потрачен впустую на эту проблему.
И вы будете продолжать тратить свое время на догадки вместо того, чтобы тратить некоторое время на изучение языка должным образом. Почти весь вышеприведенный код неверен и в лучшем случае приведет к неверным результатам, а в худшем-к сбою приложения.