Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.70/30: Рейтинг темы: голосов - 30, средняя оценка - 4.70
Си-решеточник
139 / 133 / 60
Регистрация: 07.02.2011
Сообщений: 669
1

Присвоение значений элементам в структуре

29.05.2011, 12:00. Просмотров 5464. Ответов 6
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <string.h>
#include <iostream.h>
 
using spacename std;
 
struct mystruct
{
        char a[51];char b[5];char c[5];
        char d[21];char e[41];char f[31];
        char g[31];
};
main();
{
String mystring;
mystruct x;
 
mystring="Some text";
x.a=mystring.c_str;
 
return;
}
Данный код вызывает ошибку:
[C++ Error] E2277 Lvalue required
в строке x.a=mystring.c_str;

Подскажите, в чем ошибка, пожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.05.2011, 12:00
Ответы с готовыми решениями:

Присвоение значений элементам массива
Пишу на С простенькую функцию exchange(), которая элементу массива a присваивает значение элемента...

Присвоение значений элементам массива
Здравствуйте, форумчане! Создала массив, пытаюсь присвоить его элементам новые значения, но...

Присвоение значений элементам вложенной структуры
Необходимо присвоить значение элементам массива структур struct message { unsigned char code;...

Присвоение значений всем элементам массива
Как присвоить значение всем элементам массива наиболее простым способом думал что double...

6
1998 / 1598 / 488
Регистрация: 31.05.2009
Сообщений: 2,990
29.05.2011, 13:29 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <string>
#include <cstring>
 
struct mystruct
{
    char a[51];
    char b[5];
    char c[5];
    char d[21];
    char e[41];
    char f[31];
    char g[31];
};
 
int main()
{
    mystruct x;
    memset(&x, 0, sizeof(x));
 
    std::string mystring = "Some text";
    strncpy(x.a, mystring.c_str(), sizeof(char) * sizeof(x.a) - 1);
 
    return 0;
}
strncpy не добавляет '\0' в конец строки, за этим надо следить самостоятельно(либо отказаться от символьных массивов и использовать std::string).
0
Эксперт С++
8351 / 6098 / 610
Регистрация: 10.12.2010
Сообщений: 28,356
Записей в блоге: 29
29.05.2011, 15:13 3
Для char операторы присвоения не определены как я помню, поэтому нужно юзать методы.

A почему не просто strcpy?

C++
1
2
mystruct x;
strcpy(x.a, "Some text");
0
1998 / 1598 / 488
Регистрация: 31.05.2009
Сообщений: 2,990
29.05.2011, 16:06 4
Цитата Сообщение от Avazart Посмотреть сообщение
A почему не просто strcpy?
Потому что strcpy не следит за размером передаваемых ей строк. "Some text" поместится в x.a, но не поместится в x.b. При
C++
1
strcpy(x.b, "Some text");
произойдёт выход за пределы массива.
0
Эксперт С++
8351 / 6098 / 610
Регистрация: 10.12.2010
Сообщений: 28,356
Записей в блоге: 29
29.05.2011, 17:28 5
А почему не просто strncpy(x.a, mystring.c_str(), sizeof(x.a) - 1); ?
0
1998 / 1598 / 488
Регистрация: 31.05.2009
Сообщений: 2,990
29.05.2011, 17:59 6
Это я написал автоматически Вообще размер статического массива узнается так sizeof(имя_массива) / sizeof(тип_массива), но в данном случае, да, можно и так написать strncpy(x.a, mystring.c_str(), sizeof(x.a) - 1);
0
1280 / 603 / 116
Регистрация: 18.08.2009
Сообщений: 832
29.05.2011, 21:55 7
Rameron, что тебе мешает сделать структуру из строк и не парить Моск?

C++
1
2
3
4
5
6
7
8
9
10
11
12
struct TStringStruct {
     TStringStruct() : sA("default text") , sB(""), sC("") {};
     std::string sA;
     std::string sB;
     std::string sC;
}
 
TStringStruct StrStruct;
StrStruct.sA = "asdfasdfasdf";
 
const std::string sTest = "asdfasdfasdfasdfasdfasdf";
StrStruct.sA = sTest;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.05.2011, 21:55

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

Присвоение значений элементам двумерного вектора
Недавно добрие люди помогли мне со следующим кодом 1 код vector&lt;vector&lt;char&gt;&gt; vv; // ......

Присвоение элементам массива значений структуры
Доброго дня. У меня возникла проблема с присвоением элементам массива значений структуры. В чем...

Присвоение значений элементам двумерного динамического массива
Я недавно начал программировать на языке С++, поэтому, естественно, многого не понимаю :( Вот...

Segmentation fault. Присвоение значений элементам структуры
Компилируется как надо. На винде падает после запуска, на линуксе после запуска выдает sigmentation...


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

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

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