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

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

30.08.2016, 12:56. Просмотров 916. Ответов 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.08.2016, 12:56
Ответы с готовыми решениями:

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

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

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

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

12
Эксперт С++
1588 / 920 / 777
Регистрация: 06.02.2016
Сообщений: 2,408
Записей в блоге: 29
30.08.2016, 13:10 2
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

Попробуйте
C++
1
 strcpy(g.fullname,name);
1
Модератор
Эксперт .NET
5681 / 4597 / 2900
Регистрация: 20.04.2015
Сообщений: 8,213
30.08.2016, 13:17 3
Саша Перков,
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  [ТС] 4
Попробовал, теперь выдает ошибку при компиляции.


Ошибка 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
55 / 55 / 45
Регистрация: 24.03.2016
Сообщений: 378
30.08.2016, 13:32 5
Саша Перков, пропишите:
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  [ТС] 6
Все, исправил. Вместо strcpy, я использовал strcpy_s. Осталось только узнать чем он отличается об обычной strcpy.
0
Эксперт CЭксперт С++
5053 / 2237 / 330
Регистрация: 20.02.2013
Сообщений: 5,600
Записей в блоге: 24
30.08.2016, 13:35 7
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 8
попробуй подключи библиотеку:
#include string.h
0
Эксперт CЭксперт С++
5053 / 2237 / 330
Регистрация: 20.02.2013
Сообщений: 5,600
Записей в блоге: 24
30.08.2016, 13:38 9
Цитата Сообщение от Саша Перков Посмотреть сообщение
Вместо strcpy, я использовал strcpy_s. Осталось только узнать чем он отличается об обычной strcpy.
Вот обычная стандартная strcpy из заголовочного файла cstring. А вот майкрософтовский вариант strcpy_s. А разница между ними вот в чём.
0
55 / 55 / 45
Регистрация: 24.03.2016
Сообщений: 378
30.08.2016, 13:39 10
Саша Перков, Использование strcpy_s
0
Эксперт CЭксперт С++
5053 / 2237 / 330
Регистрация: 20.02.2013
Сообщений: 5,600
Записей в блоге: 24
30.08.2016, 13:40 11
Цитата Сообщение от 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  [ТС] 12
А можете пояснить, зачем выполнять вот это:
C++
1
#define _CRT_SECURE_NO_WARNINGS
Чтобы использовать strcpy? А то надо понимать, что я в программу пишу.
0
369 / 367 / 212
Регистрация: 29.03.2013
Сообщений: 867
30.08.2016, 16:14 13
Саша Перков, чтобы отключить предупреждения о нерекомендуемых функциях для старых менее безопасных функций ( в данном случае strcpy )
P.S. В поиске по форуму есть ответы на все эти вопросы
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.08.2016, 16:14

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

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

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

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

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

класс «Строка» (данные-члены класса – строчка, функции-члены класса – операции)
Помогите пожалйуста с реализацией программы... Реализовать класс «Строка» (данные-члены класса –...

Данные строкового типа(программа для введения текста, его кодирования и вывода результата)
Последняя просьба! Придумать і сложить программу для введения текста, его кодирования и вывода...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.