alex bottom122323 Ответов: 2

Я пытался использовать структурную функцию в своем коде и постоянно получал ошибку.


<pre>


#include<iostream>
using namespace std;
struct bookstore;
{
   
    int bookstore id;
    char name;
    float tax;
}
    int main()
    {
        struct bookstore a;
            a.bookstore id=1;
            a.name='h';
            a.tax=120.12;
            

            cout<<"book store"<<a.bookstore<<endl;
            cout<<"name"<<a.name<<endl;
            cout<<"tax"<<a.tax<<endl;
            

        
        
        return 0;
    }


Что я уже пробовал:

Я попытался изменить имена переменных.

Patrice T

И вы планируете описать эту ошибку ?

2 Ответов

Рейтинг:
1

Richard MacCutchan

int bookstore id;

Вы не можете иметь имена переменных с пробелами в них. Измените свой код на :
struct bookstore
{
    int id;
    char name;
    float tax;
};
int main()
{
    struct bookstore a;
    a.id = 1;
    a.name = 'h';
    a.tax = 120.12;
    
    cout << "book store id" << a.id << endl;
    cout << "name" <<a.name << endl;
    cout << "tax" <<a.tax << endl;

    return 0;
}


alex bottom122323

Ричард ваш код показывает ошибку в vs-коде.
на погрешность это:


ПС E:\code практика&ГТ; компакт-диск "e:\code практика\" ; если ($?) { г++ tutt6.cpp -о tutt6 } ; если ($?) { .\tutt6 }
tutt6.cpp:2:1: ошибка: ожидаемый неквалифицированный идентификатор перед токеном '{'
2 | {
| ^
tutt6.cpp: в функции 'int main()':
tutt6.cpp:9:22: error: aggregate 'bookstore a' имеет неполный тип и не может быть определен
9 | структура книжный магазин;
| ^
tutt6.cpp:14:5: ошибка: 'cout' не был объявлен в этой области
14 | соиь <&ЛТ; "ID книги магазин" &ЛТ;&ЛТ; а.код на << епси;
| ^~~~
tutt6.cpp:14:40: error: 'endl' не был объявлен в этой области видимости
14 | соиь <&ЛТ; "ID книги магазин" &ЛТ;&ЛТ; а.код на << епси;
| ^~~~
ПС E:\code практика>



скажите мне, это проблема с моим компьютером или что-то еще.
Я вставляю код ниже:


структура книжного магазина;
{
int id;
имя char;
плавающий налог;
}
тап_п()
{
структура книжный магазин а;
a.id = 1;
а.имя = 'ч';
а.налог = 120,12;

соиь <&ЛТ; "ID книги магазин" &ЛТ;&ЛТ; а.код на << епси;
cout << "имя" <

Richard MacCutchan

Извините, я пропустил ошибки в структуре. Так и должно быть:

struct bookstore // no semi-colon after bookstore
{
int id;
char name;
float tax;
};   // semi-colon here to terminate the struct definition

alex bottom122323

Спасибо.
Вы мне очень помогли.

Richard MacCutchan

Всегда рад помочь людям, которые стараются для себя.

Рейтинг:
1

OriginalGriff

Чтобы добавить к тому, что говорит Ричард, я бы предложил, чтобы ваш struct возможно, выиграет от еще одного небольшого изменения:

struct bookstore;
{
    int bookstore id;
    char name;
    float tax;
};
только позволяет name элемент должен содержать один символ: 'A', 'B', 'C' и так далее. Поскольку почти никто и ни одна компания не использует один символ, он, вероятно, был бы лучше в виде последовательности символов - либо указателя символов, либо массива символов:
struct bookstore;
{
    int bookstore id;
    char *name;
    float tax;
};
Или
a.name = "Waterstones";
И использовать malloc чтобы выделить место для строк пользовательского ввода и т. д.
В дальнейшем вы будете копировать данные:
#include <string.h>
...
   strcpy(a.name, "Waterstones");


Richard MacCutchan

Смотрите мой последний комментарий выше.

OriginalGriff

:до:
Этого мне тоже не хватало.

OriginalGriff

Исправлено.

Rick York

Я предпочитаю использовать strdup для выделения памяти и копирования строки в нее одним вызовом. Полученный указатель можно освободить, вызвав функцию free.