• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Переименовывание файлов, формирование строки путя

  • Автор темы rudeman
  • Дата начала
Статус
Закрыто для дальнейших ответов.
R

rudeman

Добрый день! Подскажите как проблемку решить..
Суть...Есть файл лога. Я функцией проверяю нарушена структура или нет.Если да - необходимо переименовать его и создать новый.
Ну новый создать проблем нету...
Переименовку нашел такую...
SHFILEOPSTRUCT op;
op.hwnd = NULL;
op.lpszProgressTitle = NULL;
op.pFrom = log_path;
op.pTo = new_log_path;
op.wFunc = FO_MOVE;
op.fFlags = FOF_NOCONFIRMATION | FOF_SILENT | FOF_NOERRORUI ;
но... вопрос в new_log_path...
у миня ж "испорченых" файлов может быть не 1... а несколько... некоторый набор... log1.bak, log2.bak и т.д.
Суть... как мне сформировать строку,которая new_log_path? )
Как слепить из "d:/log" некоего счетчика i и собственно окончания ".bak"?
И тогда я его смогу загнать в чтот типа
Код:
if (p_minor_status==161)
{
while(file!=NULL)
{
file = fopen(new_path, "w" );
if (file!=NULL)
{
i=0;
new_path ={очередной проверяемый путь }
i++;
}
}
SHFileOperation(&op);
}
т.е. пока не дойдет до файла который не может открыть(т.е. его нету), оно перебирает.. как тока доходит - переименовывает текущий лог в него...
Буду благодарен за советы.
Или может кто подскажет более простой вариант сделать эт?
 
G

grigsoft

Эээ, ну собственно путь собирается, видимо, примерно так:
Код:
TCHAR szPath[MAX_PATH] = _T("d:\\log");
LPTSTR szEnd = szPath+_tcslen(szPath);
TCHAR szNum[10];
...
int i=1;
...
_tcscpy(szEnd, _itot(i, szNum, 10));
_tcscat(szEnd, _T(".bak"));
// use szPath
По задаче в целом - это по потребностям надо смотреть, что потом с этими файлами делать придется. Можно пользоваться GetTempFilename, можно хранить последний номер и начинать искать с него.
 
R

rudeman

Спасиб, собралось )
Сохранять не представляется возможным, так как с данными файлами будет работать не только этот код, но и другие программы. Тут именно нада определять следующий свободный путь для лога
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!