Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 07.08.2014
Сообщений: 72

Как правильно инициализировать данные-члены строкового типа в реализации функции-члена?

30.08.2016, 12:56. Показов 1265. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте. У меня тут возникла очень глупая ошибка и я не могу понять в чем причина и как ее исправить. Значит, имеется структура.
C++
1
2
3
4
5
struct golf
{
    char fullname[40];
    int handicap;
};
И имеется функция, которая должна заносить данные в эту структуру.
C++
1
2
3
4
5
void setgolf(golf & g, const char *name, int hc)
{
    g.fullname = name;
    g.handicap = hc;
}
Но вылезает ошибка, когда я пытаюсь присвоить строке из структуры указатель на строку. "выражение должно быть допустимым для изменения левосторонним значением".
Я понимаю, что тут, скорее всего, просто нельзя присвоить строке указатель на строку. Но как тогда сделать по другому, чтобы оно работало? Раньше почему-то с таким не сталкивался. Заранее спасибо.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.08.2016, 12:56
Ответы с готовыми решениями:

Как правильно инициализировать статические члены класса?
Я новичок и заранее прошу прощение за тупые вопросы. Имеются два класса: Solution и Pool. Pool состоит из нескольких обьектов класса...

Как правильно инициализировать переменную типа decimal на примере нахождения массы двух планет
Здравствуйте, друзья. Подскажите, пожалуйста, как правильно инициализировать переменную типа decimal на примере нахождения массы двух...

Ошибка C3845: только статические данные-члены можно инициализировать внутри класс ссылки
Я только начал программировать на c++ и ещё плохо разбираюсь в классах и вот моя ошибка. Помогите не могу разобраться в чём дело Вот...

12
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
30.08.2016, 13:10
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

Попробуйте
C++
1
 strcpy(g.fullname,name);
1
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
30.08.2016, 13:17
Саша Перков,
C++
1
2
3
4
5
6
7
8
9
10
11
struct golf
{
    char* fullname;
    int handicap;
};
 
void setgolf(golf & g, char *name, int hc)
{
    g.fullname = name;
    g.handicap = hc;
}
0
1 / 1 / 0
Регистрация: 07.08.2014
Сообщений: 72
30.08.2016, 13:29  [ТС]
Попробовал, теперь выдает ошибку при компиляции.


Ошибка 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.
0
 Аватар для Armatus
56 / 56 / 44
Регистрация: 24.03.2016
Сообщений: 378
30.08.2016, 13:32
Саша Перков, пропишите:
C++
1
#define _CRT_SECURE_NO_WARNINGS
В шапке приложения. ( Там где include )

Добавлено через 45 секунд
или юзайте strcpy_s вместо strcpy.
0
1 / 1 / 0
Регистрация: 07.08.2014
Сообщений: 72
30.08.2016, 13:34  [ТС]
Все, исправил. Вместо strcpy, я использовал strcpy_s. Осталось только узнать чем он отличается об обычной strcpy.
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
30.08.2016, 13:35
C++
1
2
3
4
5
6
7
#include <cstring>
 
void setgolf(golf & g, const char *name, int hc)
{
    strcpy(g.fullname,name);
    g.handicap = hc;
}
0
0 / 0 / 0
Регистрация: 30.08.2016
Сообщений: 5
30.08.2016, 13:35
попробуй подключи библиотеку:
#include string.h
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
30.08.2016, 13:38
Цитата Сообщение от Саша Перков Посмотреть сообщение
Вместо strcpy, я использовал strcpy_s. Осталось только узнать чем он отличается об обычной strcpy.
Вот обычная стандартная strcpy из заголовочного файла cstring. А вот майкрософтовский вариант strcpy_s. А разница между ними вот в чём.
0
 Аватар для Armatus
56 / 56 / 44
Регистрация: 24.03.2016
Сообщений: 378
30.08.2016, 13:39
Саша Перков, Использование strcpy_s
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
30.08.2016, 13:40
Цитата Сообщение от Oleg86region Посмотреть сообщение
попробуй подключи библиотеку:
#include string.h
А точнее так:
C
1
#include <string.h> // для старых плюсовых компиляторов (либо, для чистого Си)
или, как я уже написал выше, так:
C++
1
#include <cstring> // для новых плюсовых компиляторов
0
1 / 1 / 0
Регистрация: 07.08.2014
Сообщений: 72
30.08.2016, 13:45  [ТС]
А можете пояснить, зачем выполнять вот это:
C++
1
#define _CRT_SECURE_NO_WARNINGS
Чтобы использовать strcpy? А то надо понимать, что я в программу пишу.
0
 Аватар для Людвиг Бодмер
378 / 375 / 213
Регистрация: 29.03.2013
Сообщений: 867
30.08.2016, 16:14
Саша Перков, чтобы отключить предупреждения о нерекомендуемых функциях для старых менее безопасных функций ( в данном случае strcpy )
P.S. В поиске по форуму есть ответы на все эти вопросы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.08.2016, 16:14
Помогаю со студенческими работами здесь

Данные строкового типа
Ввести фамилию, имя и отчество как одно данное строкового типа. Определить длину строки и количество букв &quot;а&quot; в ней. 9. Изъять...

Данные строкового типа
Что-то вообще никак не получается((( 1. Для любого введенного предложения заменить слоги &quot;ма&quot; на слоги &quot;ле&quot;. ...

Выручайте! Данные строкового типа
Ввести фамилию, имя, отчество как одно данное строчечного типа. Определить длину строки и количество букв &quot;а&quot; в ней. Вивести...

Как инициализировать статические члены класса
Помогите пожалуйста....я не знаю как вывести в статическое поле значения((( #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; ...

Как инициализировать члены класса, являющегося параметром шаблона
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; template &lt;typename SomeClass&gt; class Array { private : ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru