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

Тема в разделе "MS Visual C++", создана пользователем okwell5, 28 ноя 2011.

Статус темы:
Закрыта.
  1. okwell5

    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" - вот такой результат. Из результата видно, что точка вставляется нормально, а вот имя и расширение - не знаю почему такие.
    Дебаггер не помог.
    Может кто встречался уже с этим или знает, в чем дело? Или помогите найти другое решение.
     
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Конечно встречались. Поможем.
    Велосипеды давно изобретены. Функция strcat(), из стандартного набора, сделает все что тебе необходимо. ( http://www.cplusplus.com/reference/clibrary/cstring/strcat/ )
     
  3. okwell5

    okwell5 Гость

    Да, получилось, несколько строчек и все готово!
    Код (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;
    }
     
  4. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Кстати есть вариант еще проще:
    Код (C++):
    sprintf( full_name, "%s%s.%s", path, filename, extension );
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей