С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 06.05.2021
Сообщений: 212
1

Функция scanf и структуры

17.05.2023, 19:18. Показов 657. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, нужно сделать задание и возникли у меня проблемы. В чём суть:

Задание 1.1 Объявите структуру BOOK, описывающую книгу
(автор, заглавие, год издания, цена, категория…).
Подумайте: какого типа могут быть поля структуры.

Сделал структуру
C++
1
2
3
4
5
6
7
8
struct BOOK
{
    const char* author;
    const char* heading;
    size_t year_of_publication = 0;
    size_t price = 0;
    const char* genre;
};
Следующее задание:

в) локальный объект типа BOOK создайте без инициализации, но позднее заполните вручную поля структуры некоторыми значениями.

C++
1
2
3
4
5
6
BOOK book2;
    book2.author = "Nikolai Leskov";
    book2.heading = "The Enchanted Wanderer";
    book2.genre = "Novella";
    book2.price = 500;
    book2.year_of_publication = 2021;
А дальше начинаются проблемы.

Напишите функцию для формирования полей структуры.
Прототип функции поместите в файл "book.h", а реализацию - в "book.cpp"
Для ввода используйте функцию стандартной библиотеки scanf

Строка вида const char* находится в защищённой от записи памяти, значит вводить в неё по ходу выполнения программы ничего нельзя. Я попробовал переделать свои строки в char[], но тогда проблема вылезает в задании, где надо присвоить полям структуры значения, так как с массивами не прокатывает такое. При этом, можно использовать только стандарт С++99, процедурное программирование. Конструкторы, деструкторы и перегрузки операторов использовать нельзя. Буду признателен если подскажете какую-нибудь идею!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2023, 19:18
Ответы с готовыми решениями:

Как поместить поле структуры в scanf()
Здравствуйте, уважаемые форумчане! Недавно написал несложную программу с использованием структур,...

Структуры, неправильная работа scanf с символьными массивами
При запуске программа вроде как ведёт себя корректно до момента с printf("Введите время прибытия:...

Функция scanf()
//--------------------------------------------------------------------------- #include <vcl.h>...

Функция scanf() неправильно работает
#include <stdio.h> #include <conio.h> #include <math.h> int main() { unsigned char c1, c2;...

Функция scanf не считывает int
первый случай, успешно. int i; char ch='r'; scanf("%i", &i); //ведено 8 cout << "num=" << i...

9
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 1
17.05.2023, 19:24 2
Если можно пользоваться std::string - пиши
C++
1
2
3
4
5
6
7
8
9
10
11
struct BOOK
{
    std::string author;
    std::string heading;
    size_t year_of_publication = 0;
    size_t price = 0;
    std::string genre;
};
    book2.author = "Nikolai Leskov";
    book2.heading = "The Enchanted Wanderer";
    book2.genre = "Novella";
Добавлено через 2 минуты
Если нельзя пользоваться std::string - пиши
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#define _CRT_SECURE_NO_WARNINGS
#include <cstring>
struct BOOK
{
    char author[128];
    char heading[128];
    char genre[128];
    size_t year_of_publication = 0;
    size_t price = 0;
};
....
....
strcpy(book2.author, "Nikolai Leskov");
strcpy(book2.heading = "The Enchanted Wanderer");
strcpy(book2.genre = "Novella");
1
Вездепух
Эксперт CЭксперт С++
12792 / 6669 / 1795
Регистрация: 18.10.2014
Сообщений: 16,870
17.05.2023, 19:56 3
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
C++
1
2
strcpy(book2.heading = "The Enchanted Wanderer");
strcpy(book2.genre = "Novella");
???
0
1 / 1 / 0
Регистрация: 06.05.2021
Сообщений: 212
17.05.2023, 20:05  [ТС] 4
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Если нельзя пользоваться std::string - пиши
Спасибо, этот вариант мне подходит
0
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 1
17.05.2023, 20:46 5
TheCalligrapher, ну да, копипаст не удался
0
1022 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,214
19.05.2023, 15:02 6
заблудились что ли?
Цитата Сообщение от Ballantrae Посмотреть сообщение
scanf
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
strcpy
Цитата Сообщение от Ballantrae Посмотреть сообщение
const char*
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
char heading[128];
0
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 1
19.05.2023, 17:47 7
vlisp, что сказать-то хотел?
0
1022 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,214
20.05.2023, 17:13 8
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
что сказать-то хотел?
заблудились?
0
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 1
20.05.2023, 18:26 9
Я не понимаю вопроса, я что-то невпопад написал?
0
1022 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,214
24.05.2023, 17:34 10
тут раздел по c++, а не по Си
0
24.05.2023, 17:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2023, 17:34
Помогаю со студенческими работами здесь

Функция внутри структуры использует указатель, как поле этой структуры
Коротко, есть класс A, описан в файле A_class.h ну и реализованы функции в A_class.cpp, есть файл...

Передачи структуры и функция структуры
Здравствуйте, у меня такое задание Есть некая структура struct MySettings { int a; int...

scanf для чтения структуры
Возникли вот какие вопросы, прошу вас ткнуть носом, ув. форумчане... Есть структура вида NETBOOK ...

Инициализация структуры через scanf
Здравствуйте нужна помощь. как можно через функцию инициализировать структуру спомощью scanf...

scanf() для поля структуры
#include &lt;stdio.h&gt; #include &lt;string&gt; #include &lt;string.h&gt; #include &lt;iostream&gt; #include...

C - Функция scanf()
И снова я.Заранее прошу прощения за такие глупые,возможно,вопросы,но всё же..: #include...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru