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

Структуры. Вызов данных структуры по указателю. с++ - C++

Восстановить пароль Регистрация
 
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
29.12.2011, 01:17     Структуры. Вызов данных структуры по указателю. с++ #1
Условие задачи:

Напишите прогу, которая печатает содержимое структуры под названием Reading. Reading имеет следующие характеристики:
- Reading номер
- количество
- Описание (20 символов)

Тест программа должна создать Reading контент которого назначается на уровне инициализации.
Печать Reading осуществляется с помощью Print() функции. Это функция использует адрес структуры как параметр.

Дополнение: Допустим p указатель структуры. Это позволит вывести печать полей таким образом (*p).fieldname or p->fieldname.
Помогите, пожалуйста, с как реализовать печать вообще не представляю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2011, 01:17     Структуры. Вызов данных структуры по указателю. с++
Посмотрите здесь:

C++ Структуры данных.
C++ Структуры данных
C++ Структуры данных
C++ Структуры данных
C++ Структуры данных
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
29.12.2011, 01:20     Структуры. Вызов данных структуры по указателю. с++ #2
Рекомендую начать с изучения структур.
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
29.12.2011, 18:11  [ТС]     Структуры. Вызов данных структуры по указателю. с++ #3
Вот родился такой код.
Все бы хорошо код компилируется и выдает переменные.
Только вместе с компеляцией выдается такая
ошибка : "Run-Time Check Failure #2 - Stack around the variable 'art' was corrupted."

Подскажите в чем у меня ошибка.
заранее спасибо
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
32
33
34
#include <conio.h>
#include <iostream>
 
using namespace std; 
struct Article
{
    int Article_number;
    int Quantity;
    char Decription[20] ;
};
 
void Print (struct Article *art )
{
cout << "article number: " << art -> Article_number;
cout << endl;
cout << "article number: " << art -> Quantity ;
cout << endl;
cout << "article number: " << art -> Decription[20] ;
cout << endl;
}
 
int main (int argc, char *argv[])
{
    struct Article art; 
 
    art.Article_number = 554; 
    art.Decription[20] = ('H','i');
    art.Quantity = 11;
 
    Print(&art);
    cout << endl;
    system ("pause") ;
 
}
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.12.2011, 18:15     Структуры. Вызов данных структуры по указателю. с++ #4
Цитата Сообщение от Leeto Посмотреть сообщение
art.Decription[20] = ('H','i')
Чего вы пытались добиться этой строкой?
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
29.12.2011, 18:21     Структуры. Вызов данных структуры по указателю. с++ #5
Цитата Сообщение от Leeto Посмотреть сообщение
Дополнение: Допустим p указатель структуры. Это позволит вывести печать полей таким образом (*p).fieldname or p->fieldname.
К чему это? А еще можно
C
1
f[0].fildname
Цитата Сообщение от Leeto Посмотреть сообщение
cout << "article number: " << art -> Decription[20] ;
Ошибка, выход за пределы массива.
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
29.12.2011, 18:24  [ТС]     Структуры. Вызов данных структуры по указателю. с++ #6
Цитата Сообщение от soon Посмотреть сообщение
Чего вы пытались добиться этой строкой?
Хочу чтобы массив выводил не более 20 символов, как по заданию... в конкретном случаю хочу чтобы он "Hi" написал.

Добавлено через 3 минуты
Цитата Сообщение от go Посмотреть сообщение
К чему это? А еще можно
C
1
f[0].fildname
Просто задание такое. Научиться передавать печать структуры по указателю.


Ошибка, выход за пределы массива.
Как правильно сделать ?
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.12.2011, 18:26     Структуры. Вызов данных структуры по указателю. с++ #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
#include <iostream>
#include <cstring>
 
typedef struct 
{
    int Article_number;
    int Quantity;
    char Decription[20];
    void print()
    {
        std::cout << "article number: " << Article_number << std::endl;
        std::cout << "article quantity: " << Quantity << std::endl;
        std::cout << "article decription: " << Decription << std::endl;
    }
} Article;
 
int main (int argc, char *argv[])
{
        Article* art = new Article; 
        art -> Article_number = 554; 
        strcpy(art -> Decription, "hi\0");
        art -> Quantity = 11;
        art -> print();
        std::cout << std::endl;
        delete art;
        return 0;
}
Добавлено через 29 секунд
Не вижу смысла выносить print из структуры.
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
29.12.2011, 18:37  [ТС]     Структуры. Вызов данных структуры по указателю. с++ #8
Цитата Сообщение от soon Посмотреть сообщение
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
#include <iostream>
#include <cstring>
 
typedef struct 
{
    int Article_number;
    int Quantity;
    char Decription[20];
    void print()
    {
        std::cout << "article number: " << Article_number << std::endl;
        std::cout << "article quantity: " << Quantity << std::endl;
        std::cout << "article decription: " << Decription << std::endl;
    }
} Article;
 
int main (int argc, char *argv[])
{
        Article* art = new Article; 
        art -> Article_number = 554; 
        strcpy(art -> Decription, "hi\0");
        art -> Quantity = 11;
        art -> print();
        std::cout << std::endl;
        delete art;
        return 0;
}
Добавлено через 29 секунд
Не вижу смысла выносить print из структуры.
Спасибо огромное. В двух словах что такое strcpy?
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.12.2011, 18:39     Структуры. Вызов данных структуры по указателю. с++ #9
Если просто написать
C++
1
2
3
char str[20];
//
str = "hi";
Компилятор обматерит вас и будет прав. strcpy копирует одну строку в другую. Подробнее тут
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2011, 18:54     Структуры. Вызов данных структуры по указателю. с++
Еще ссылки по теме:

C++ ООП.Разработать структуру элементов данных класса в виде динамической структуры данных
Структуры данных C++
C++ Вызов из структуры

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

Или воспользуйтесь поиском по форуму:
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
29.12.2011, 18:54     Структуры. Вызов данных структуры по указателю. с++ #10
легкая задача, чего столько вопросов
Если закрыть глаза на strcpy
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
#include <iostream>
 
using namespace std;
 
class reading {
private:
    int num;
    int count;
    char note[20];
public:
    reading (int val, int cnt, char s[20]) { num = val; count = cnt; strcpy (note, s); }
    friend ostream& operator<< (ostream& s, reading& d);  
};
 
ostream& operator<< (ostream& s, reading& d) {
        s << "article number: " << d.num << endl;
        s << "article quantity: " << d.count << endl;
        s << "article decription: " << d.note << endl;
        return s;
}
 
int main ()
{
    reading obj(10, 20, "ABC");
 
    cout << obj << endl;
 
    system ("pause");
    return 0;
}
Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от soon Посмотреть сообщение
Компилятор обматерит вас и будет прав. strcpy копирует одну строку в другую.
Логика в это есть. В данной случае мы имеем дело с указателями. (Слево указатель-коснтанта и менять значение мы не имеем право).

Yandex
Объявления
29.12.2011, 18:54     Структуры. Вызов данных структуры по указателю. с++
Ответ Создать тему
Опции темы

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