Форум программистов, компьютерный форум CyberForum.ru

Ошибка с преобразованием char - C++

Восстановить пароль Регистрация
 
Fooly
 Аватар для Fooly
21 / 17 / 1
Регистрация: 26.03.2012
Сообщений: 147
17.07.2012, 00:51     Ошибка с преобразованием char #1
В задачке дана структура и проттотип функции. Функция должна присваивать имя структуре. Но мне выдаёт ошибку:
невозможно преобразовать "const char *" в "char [40]"
структура:
C++
1
2
3
4
5
struct golf
{
    char fullname[Len];
    int handicap;
};
функция
C++
1
2
3
4
void setgolf(golf & g,const char * name, int hc)
{
g.fullname=name;
g.handicap=hc;}
Пытался менять на char name, char name [40] и др. - результат 1 и тот же
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
17.07.2012, 00:59     Ошибка с преобразованием char #2
Цитата Сообщение от Fooly Посмотреть сообщение
g.fullname=name
fullname - это грубо говоря реальный массив
присвоение массиву значения указателя - не имеет смысла
тут вы должны скопировать содержание этого указателя в массив
делается это так
C
1
2
3
strcpy (g.fullname, name); // опасный вариант, может быть переполнение массива, если имя слишком длинное
memcpy (g.fullname, name, strlen(name) + 1); // копирование с точки зрения данных, опасно по той же причине
snprintf (g.fullname, 40, "%s", name); // безопасный вариант
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.07.2012, 01:05     Ошибка с преобразованием char #3
Удалил.
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
17.07.2012, 01:46     Ошибка с преобразованием char #4
Цитата Сообщение от Fooly Посмотреть сообщение
g.fullname=name;
можно в принципе(но это не значит,что это хорошо) использовать const_cast
C++
1
g.fullname = const_cast<char *>(name);
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
17.07.2012, 02:05     Ошибка с преобразованием char #5
alexey31415, и? код от этого стал рабочим чтоли?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.07.2012, 02:11     Ошибка с преобразованием char #6
Цитата Сообщение от alexey31415 Посмотреть сообщение
1 g.fullname = const_cast<char *>(name);
Компилятор не пропускает, да и смысл? Как правильно написал alex_x_x, в массив нужно копировать.
Yandex
Объявления
17.07.2012, 02:11     Ошибка с преобразованием char
Ответ Создать тему
Опции темы

Текущее время: 04:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru