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

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

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

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

Ошибка При Формирование Пути К Файлу Циклами

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

okwell5

Написал функцию формирования пути к файлу. Путь формируется по следующему принципу:
путь+имя_файла+расширение_файла
путь, имя файла, расширение - это динамические массивы. Путь содержится в глобальном массиве var_path. Вот код функции:
C++:
void pathfile( char *name, char *ext)
{
char *lname, *lext;
lname=new char[256];
lext=new char[256];
strcpy(lname,name);
strcpy(lext, ext);
char *lpfile;
lpfile= new char[256];
for(int l=0; l<strlen(var_path); l++)
lpfile[l]=var_path[l];
//strcpy(lpfile, var_path);
for(int i=strlen(var_path); i<(strlen(var_path)+strlen(name)); i++)
lpfile[i]=lname[i];
lpfile[strlen(var_path)+strlen(name)]='.';
for(int j=strlen(var_path)+strlen(name)+1; j<(strlen(var_path)+strlen(name)+1+strlen(ext)); j++)
lpfile[j]=lext[j];
lpfile[strlen(var_path)+strlen(name)+1+strlen(ext)]='\0';
strcpy(pfile, lpfile);
delete[] lpfile;
delete[] lname;
delete[] lext;
}
Цикл for(int l=0; l<strlen(var_path); l++) отрабатывает нормально(путь копируется), но вот во втором и третьем циклах почему-то присваивание не происходит. Точнее происходит, но вставляются не те знаки, т.е. :
lpfile="C:\\test\\HHHHH.HHH" - вот такой результат. Из результата видно, что точка вставляется нормально, а вот имя и расширение - не знаю почему такие.
Дебаггер не помог.
Может кто встречался уже с этим или знает, в чем дело? Или помогите найти другое решение.
 
L

lazybiz

Может кто встречался уже с этим или знает, в чем дело? Или помогите найти другое решение.
Конечно встречались. Поможем.
Велосипеды давно изобретены. Функция strcat(), из стандартного набора, сделает все что тебе необходимо. ( )
 
O

okwell5

Конечно встречались. Поможем.
Велосипеды давно изобретены. Функция strcat(), из стандартного набора, сделает все что тебе необходимо. ( )
Да, получилось, несколько строчек и все готово!
C++:
void pathfile( char *name, char *ext)
{
char *lpfile;
lpfile=new char[256];
strcpy(lpfile, var_path);
strcat(lpfile, name);
strcat(lpfile, ".");
strcat(lpfile, ext);
strcpy(pfile, lpfile);

delete[] lpfile;
}
 
L

lazybiz

Кстати есть вариант еще проще:
C++:
sprintf( full_name, "%s%s.%s", path, filename, extension );
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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