С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
misesin
1 / 1 / 0
Регистрация: 13.11.2014
Сообщений: 40
1

Присвоение строке значение при объявлении

21.05.2015, 22:52. Просмотров 380. Ответов 7
Метки нет (Все метки)

Необходимо создать что-то наподобие базы данных строк char. Но то присвоение. которое я предлагаю, не подходит, в чём проблема? Выдает ошибку "Выражение должно быть допустимым для изменения левосторонним значением" + ругается на размеры массивов
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
26
27
28
29
30
31
struct Car
{
    char num[9];
    char brand[30];
    short year;
    char color[30];
    char adress[30];
};
 
int main()
{
    setlocale(0, "");
    Car carList[N];
    carList[0].num = "be2025ae";
    carList[0].brand = "tesla model s";
    carList[0].year = 2013;
    carList[0].color = "silver";
    carList[0].adress = "pastera, 2";
    carList[1].num = "be1441kv";
    carList[1].brand = "renault fluence";
    carList[1].year = 2013;
    carList[1].color = "dark blue";
    carList[1].adress = "serova, 17";
    carList[2].num = "be2248ia";
    carList[2].brand = "nissan leaf";
    carList[2].year = 2013;
    carList[2].color = "bright green";
    carList[1].adress = "konnaya, 8";
    system("pause");
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2015, 22:52
Ответы с готовыми решениями:

Изменяется ли адрес или значение переменной при объявлении ее как const?
При объявлении const у нас значение переменной или адрес переменной не...

Присвоение значения к каждой строке
Всем привет! Люди тут умные думаю вам не составит труда проделать следующее....

Ошибка при объявлении типа
Как устранить ошибку? class B; class A { public: B getB() { return...

Ошибка при объявлении структуры
Ошибка при объявлении структуры # include <iostream> # include...

Ошибка при объявлении функции
Подскажите пожалуйста в строчке void (*pAction)(A, B, size, rez) = &MAX; //...

7
zss
Модератор
Эксперт С++
7506 / 6864 / 4335
Регистрация: 18.12.2011
Сообщений: 18,174
Завершенные тесты: 1
21.05.2015, 23:02 2
Цитата Сообщение от misesin Посмотреть сообщение
carList[0].num = "be2025ae";
C++
1
strcpy(carList[0].num, "be2025ae");
и так для всех строк
0
Nosey
1376 / 403 / 144
Регистрация: 22.10.2014
Сообщений: 872
Завершенные тесты: 2
21.05.2015, 23:09 3
misesin,
1) У вас не определена N. Которая должна быть константой.
2) Разберём разницу между:

char num[9] = "be2025ae"; - инициализация происходит в момент "компиляции", т.е. компилятор позаботится об задавании стартового значения переменной.
carList[0].num = "be2025ae"; - а это уже не инициализация, память под массив уже создана и соответственно эта запись должна скопировать значение константы "be2025ae" в массив символов carList[0].num. Но таков уж синтаксис языка что такой записью это не возможно, для char[] как собственно для любых массив не определён оператор присваивания.
Вы можете лишь явно скопировать память используя:
std::memcpy(&carList[0].num,"be2025ae",sizeof("be2025ae"));

Добавлено через 55 секунд
я несколько загнался см zss и strcpy.
0
misesin
1 / 1 / 0
Регистрация: 13.11.2014
Сообщений: 40
21.05.2015, 23:38  [ТС] 4
Nosey, спасибо большое за объяснение, не понимаю, почему в этой лабораторной мне не позволили использовать string

Добавлено через 3 минуты
zss, почему от меня visual studio требует strcpy_s?
0
lss
930 / 859 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
21.05.2015, 23:44 5
Цитата Сообщение от misesin Посмотреть сообщение
почему от меня visual studio требует strcpy_s?
Паранойя.
Security Development Lifecyde (SDL)
Как отключить в свойствах проекта:
http://www.cyberforum.ru/post5488517.html

Или, выше всех инклудов, прописать: #define _CRT_SECURE_NO_WARNINGS (для getch() не работает, нужно менять на _getch()).

Или ниже всех инклудов прописать: #pragma warning(disable : 4996)
0
rikimaru2013
C++ Game Dev
2473 / 1141 / 349
Регистрация: 30.11.2013
Сообщений: 3,709
21.05.2015, 23:45 6
Цитата Сообщение от lss Посмотреть сообщение
Паранойя.
ну ну.
0
misesin
1 / 1 / 0
Регистрация: 13.11.2014
Сообщений: 40
21.05.2015, 23:47  [ТС] 7
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
26
27
//Поиск по марке и цвету
void brand_color_check(Car List[])
{
    cout << endl << "Searching by brand and color" << endl << endl;
    short count = 0;
    char brand[30], color[30];
    cout << "Enter the brand of your object (lowercase): ";
    gets(brand);
    cout << "Enter the color of your object (lowercase): ";
    gets(color);
    cout << endl;
    for (int i = 0; i < N; i++)
    {
        if (brand == List[i].brand && color == List[i].color)
        {
            cout << "Result #" << count + 1 << endl;
            cout << "Number: " << List[i].num << endl 
                 << "Brand: " << List[i].brand << endl 
                 << "Year: " << List[i].year << endl 
                 << "Color: " << List[i].color << endl 
                 << "Adress: " << List[i].adress << ";" << endl;
            count++;
        }
    }
    if (!count)
        cout << "No results" << endl;
}
Эта функция почему-то постоянно выдаёт негативный результат, это не из-за того, что после заполнения части строки названием у нас остается пустая часть строки? Что с ней делать?
0
Gr1f0nn
242 / 162 / 133
Регистрация: 30.09.2012
Сообщений: 690
22.05.2015, 02:11 8
misesin, Строки сравниваются функцией strcmp().
C++
1
if (strcmp(brand, List[i].brand) == 0 && strcmp(color, List[i].color) == 0)
0
22.05.2015, 02:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2015, 02:11

Ошибка при объявлении структуры
При компиляции ругается на заголовочный файл: ...

Ошибка при объявлении массива
Здраствуйте. Я кое чего не понимаю: В программе используется массив: long...

Инициализация массива при объявлении
Здравствуйте Маленький вопросик как проинициализировать массив при...


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

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

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