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

Строки в структурах - C++

Восстановить пароль Регистрация
 
Vlad9999
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 4
14.01.2013, 15:58     Строки в структурах #1
Добрый день, объясните пожалуйста мне - начинающему, как в структуре можно обратиться к строке. Например структура:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct Record
{
bool aktiv;
int check_period;
bool port[10];
char Program_name[20];
int day;
int mes;
int ned;
int imp_on;
int imp_off;
TDateTime start;
TDateTime stop;
}
Programs;
Присвоение

C++
1
Programs.Program_name="aaa";
не проходит, хотя присвоение к одиночного символа, например:

C++
1
Programs.Program_name[2]='a';
без проблем.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 538
14.01.2013, 16:32     Строки в структурах #2
строки так не копируются, вот как нужно:

C++
1
strcpy (Programs.Program_name, "aaa");
Vlad9999
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 4
14.01.2013, 16:43  [ТС]     Строки в структурах #3
Спасибо, а Вы не могли мне разъяснить ("разжевать") если не сложно конечно, почему вот так:

C++
1
2
char Name[20];
Name="aaa";
можно, а...
Pakisan
14 / 14 / 1
Регистрация: 04.01.2013
Сообщений: 61
14.01.2013, 19:10     Строки в структурах #4
Vlad9999,
Сейчас ты создал массив, в который можно загрузить не более 20(от 0 до 19) литералов, формирующих привычную тебе строку. В приведенном тобой примере ты заполнил (0,1,2) ячейки литералами а.
P.S.
'a' - литерал
"aaa" - строка

В первом случае, ты не можешь structobject.Programm_name присвоить строку "aaa", решение этой проблемы тебе показал Afflicted.
Vlad9999
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 4
14.01.2013, 20:00  [ТС]     Строки в структурах #5
Спасибо, понял.

А не могли бы поподробнее про structobject.Programm_name...
Pakisan
14 / 14 / 1
Регистрация: 04.01.2013
Сообщений: 61
14.01.2013, 20:06     Строки в структурах #6
Vlad9999, эм, в моем случае structobject.Programm_name это Programs.Program_name, где structobject это Programs

Вот развертка:
struct Record
{
..элементы..
char Program_name[20];
}
Programs; // Структурный переменная(объект)
IPavel
9 / 9 / 0
Регистрация: 14.01.2013
Сообщений: 102
14.01.2013, 21:08     Строки в структурах #7
Ну коль есть тема про структуры...
Спрошу здесь...
Присваиваю значение через strcpy как показано выше кирилицу...
И в последующем выводе из переменной получаю,
часть слова на руском а часть вопросиками...
Компилю g++ в debian.
Пробывал в ubuntu думал какой нибудь баг но тоже самое...
Отсюда вопрос,
Как быть с кирилицей????
На латинском алфавите всё нормально присваивается и выводится...
Массив очищаю перед записью.
Буду очень признателен кто подскажет!!!!
Euroman
27 / 23 / 1
Регистрация: 11.12.2012
Сообщений: 448
14.01.2013, 21:27     Строки в структурах #8
C++
1
2
char Name[20];
Name="aaa";
Странно, а у меня так не получается. Просто вы, наверное, путаете массив с именем типа, тогда берутся все элементы. А если имя массива берется потом без имени типа, то тут имеется ввиду конкретный элемент массива.
Pakisan
14 / 14 / 1
Регистрация: 04.01.2013
Сообщений: 61
14.01.2013, 21:47     Строки в структурах #9
Цитата Сообщение от Pakisan Посмотреть сообщение
Vlad9999,
Сейчас ты создал массив, в который можно загрузить не более 20(от 0 до 19) литералов, формирующих привычную тебе строку. В приведенном тобой примере ты заполнил (0,1,2) ячейки литералами а.
P.S.
'a' - литерал
"aaa" - строка

В первом случае, ты не можешь structobject.Programm_name присвоить строку "aaa", решение этой проблемы тебе показал Afflicted.
Эм, выше я неправ извиняюсь, не обратил внимание на то как ты присвоил, точнее пропустил, и да, я идиот.
Так ты не можешь определить строку.

Скорее всего тут идет приведение типов, в чар грузится значение типа int и потом согласно ASCII выводятся символы

Извиняюсь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2013, 23:46     Строки в структурах
Еще ссылки по теме:

Функции в структурах C++
Условие в структурах C++
C++ Указатели в структурах
C++ Виртуальные методы в структурах
C++ Строки в структурах

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

Или воспользуйтесь поиском по форуму:
Vlad9999
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 4
14.01.2013, 23:46  [ТС]     Строки в структурах #10
C++
1
2
char Name[20];
Name="aaa";
Странно, а у меня так не получается. Просто вы, наверное, путаете массив с именем типа, тогда берутся все элементы. А если имя массива берется потом без имени типа, то тут имеется ввиду конкретный элемент массива. 10
Все правильно, спасибо, разобрался: можно только вот так:

C++
1
char Name[20]="aaa";
Со структурами та же песня.

C++
1
struct Record Programs={......,"aaa",.....};
Yandex
Объявления
14.01.2013, 23:46     Строки в структурах
Ответ Создать тему
Опции темы

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