Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2014, 23:52   #1
lialia
Форумчанин
 
Регистрация: 08.12.2012
Сообщений: 116
По умолчанию Непонятная ошибка с функцией strcpy С++

Здравствуйте.Возникла ошибка ,которую я не могу исправить ,помоогите пожалуйста)
Код:
void List :: AddNode( char * Val)
{
    char *p = new char[Length];
    strcpy(p, Val );
    Node *newHead = new Node( p );
    if ( !_Head ) _Head = newHead;
    else _Head -> _Next = newHead;
    newHead -> _Next = NULL;
    newHead -> _Prev = _Head;
    //newHead -> _Down = NULL;
    _Head = newHead;
    if ( _Tail == NULL )
    {
       _Tail = newHead;
       _Tail -> _Prev = NULL;
    }
    _Length++;

}
вот фрагмент,где описываем Val

Код:
const int Length = 20;

struct Sport {
    unsigned _Number;
    char _FamilyName[ Length ];
    char _Name[ Length ];
    char _Team[ Length ];
    char _KindOfSport[ Length ];
    int _Result;
    int _Penalties;
};

template <class TVal, class TPointer> struct Nodes
{
    TVal _Val;
    TPointer *_Next;
    TPointer *_Prev;
    Nodes ( TVal Val ) : _Next( NULL ), _Prev( NULL ), _Val( Val ) {}
};

struct Elem: public Nodes< Sport, Elem>
{
    Elem ( Sport Val) : Nodes( Val ) {}
};

struct Node : public Nodes< char*, Node >
{
    Node ( char* Val ) : Nodes( Val ), _LengthElem(0) {  _HeadElem = _TailElem = NULL; }
    int GetLength() { return _LengthElem; }
    Elem *_HeadElem;
    Elem *_TailElem;
    int _LengthElem;
};
Подскажите пожалуйста,в чем ошибка и как ее исправить(
lialia вне форума Ответить с цитированием
Старый 06.01.2014, 01:32   #2
b2soft
Упртй программер
Форумчанин
 
Регистрация: 26.11.2009
Сообщений: 150
По умолчанию

Приветствую, а что не работает? не компилируется? или что?
Помощь с кодом/лабами по С/С++
Контакты: ICQ 623334555 Skype: btwosoft; Mail: b2soft@yandex.ru
b2soft вне форума Ответить с цитированием
Старый 06.01.2014, 12:05   #3
lialia
Форумчанин
 
Регистрация: 08.12.2012
Сообщений: 116
По умолчанию

да,не запускается,выдает ошибку с функцией strcpy((
lialia вне форума Ответить с цитированием
Старый 06.01.2014, 12:07   #4
b2soft
Упртй программер
Форумчанин
 
Регистрация: 26.11.2009
Сообщений: 150
По умолчанию

код или текст ошибки можете написать?
Помощь с кодом/лабами по С/С++
Контакты: ICQ 623334555 Skype: btwosoft; Mail: b2soft@yandex.ru
b2soft вне форума Ответить с цитированием
Старый 06.01.2014, 14:36   #5
lialia
Форумчанин
 
Регистрация: 08.12.2012
Сообщений: 116
По умолчанию

1>c:\users\admin\documents\visual studio 2012\projects\sod5\sod5\list.cpp(32 ): error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\string.h(110): см. объявление "strcpy"
lialia вне форума Ответить с цитированием
Старый 06.01.2014, 16:00   #6
b2soft
Упртй программер
Форумчанин
 
Регистрация: 26.11.2009
Сообщений: 150
По умолчанию

ну написано ж) попытаюсь объяснить. Программа пишется на c++, тут использование простых строковых функций из С не приветствуется, так как оно не защищено от переполнения и так далее. выходов несколько:
1. использовать аки глаголет компилятор strcpy_s. ЗА справкой - в референс+гугл
2. вообще отказаться нафиг от char* в пользу std::string
3. Написать свой стринг с блекджеком и шлю...,тьфу, копированием и перегрузками
4. Использовать strncpy который копирует N символов
5. Странно что это не ворнинг, а ошибка, можно отключить в среде. попробуйте
Код:
#pragma warning(disable : 4996)
Помощь с кодом/лабами по С/С++
Контакты: ICQ 623334555 Skype: btwosoft; Mail: b2soft@yandex.ru

Последний раз редактировалось b2soft; 06.01.2014 в 16:04.
b2soft вне форума Ответить с цитированием
Старый 06.01.2014, 19:01   #7
lialia
Форумчанин
 
Регистрация: 08.12.2012
Сообщений: 116
По умолчанию

спасибо)
lialia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с функцией strcpy. MikeDebil Помощь студентам 6 04.07.2013 07:38
ошибка компиляции функция strcpy() ICELIFE Общие вопросы C/C++ 9 25.04.2013 22:27
непонятная ошибка Mikuro Помощь студентам 0 12.11.2010 20:49
непонятная ошибка Bat{CMD}_Men Общие вопросы Delphi 3 13.01.2010 17:54
Непонятная ошибка. jojahti Общие вопросы C/C++ 4 05.09.2009 20:39