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

Как передать в функцию указатель на структуру, если эта структура не определена глобально? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ DevCPP перестал компилировать http://www.cyberforum.ru/cpp-beginners/thread901332.html
Уважаемые форумчане, доброго времени суток. У меня такой вопрос: из-за чего может быть такая ошибка в DevCPP 5.4.1: c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe skipping...
C++ нет информации в выходном файле Здравствуйте.По заданию (Дан массив размера N. Определить количество его промежутков монотонности (то есть участков, на которых его элементы возрастают или убывают)) написал код.Сначала надо было... http://www.cyberforum.ru/cpp-beginners/thread901326.html
Удалить лишние пробелы C++
Сделал програму для удаления лишних пробелов из строки(те что стоят в начале строки, в конце, все кроме одного между словами). Програма вроде работает, но если количесто пробелов(во всей строке)...
Перевод потока из файлового ввода/вывода в консольный ввод/вывод C++
Есть кусок программы: freopen ("G:\\input.txt", "r", stdin); freopen ("G:\\output.txt", "w", stdout); //Открываем файлы - один для чтения, другой - для записи string a, b; cin >>a>>b;...
C++ Классы и деревья (найти ошибку в коде) http://www.cyberforum.ru/cpp-beginners/thread901310.html
Проблема с удалением элемента из дерева. Когда удаляю элемент и вывожу дерево на экран программа зацикливается. Помогите исправить! #include "stdafx.h" #include "iostream" #include <fstream>...
C++ Строки и функции пользователя. Преобразовать заданную пользователем дату в формате «дд.мм.гг» в формат «месяц дд, год» Помогите пожалуйста с программой . Преобразовать заданную пользователем дату в формате «дд.мм.гг» в формат «месяц дд, год». Например, «15.03.10» превращается в «15 марта 2010». В программе... подробнее

Показать сообщение отдельно
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
14.06.2013, 01:55
SLiTHER, когда мы объявляем структуру, мы не обязательно должны объявить глобальные переменные.
Вот пример программы на С со структурами, но без evil global variables.
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/* объявляем структуру и создаем синоним, чтобы не писать каждый раз struct */
typedef struct 
{
    char name[SIZE];    /* название  */
    char country[SIZE]; /* страна    */
    int cost;           /* стоимость */
} Resort;
 
/* <<<------- объявляем прототипы функций для работы со структурой ------->>> */
void init(Resort *);         /* инициализация структуры  */
void print(const Resort *);  /* вывод структуры на экран */
                             /* считывание с файла структурной переменной */
void readFromFile(Resort *, FILE *);
 
/* <<<---- объявляем прототипы функций для работы с массивом структур ---->>> */
/* вывод всех структур на экран */
void printAll(const Resort *, const int size);
...
/* <<<<<<<------- реализация функций для работы со структурой -------->>>>>>> */
/* функция инициализации структуры. Принимает указатель на структурную
переменную. Запрашивает у пользователя информацию и заполняет поля структуры */
void init(Resort *r)
{
    system("cls"); /* очистка экрана */
    printf("Введите название курорта: "); /* информационное сообщение */
    scanf("%s", r->name);                 /* заполнение полей по указателю */
    printf("Введите страну: ");
    scanf("%s", r->country);
    printf("Введите стоимость: ");
    scanf("%d", &r->cost);
}
 
/* функция вывода полей структуры на экран. Принимает указатель на константную
(read-only) структурную переменную типа Resort. Выводит поля на экран */
void print(const Resort *r)
{
    printf("Название курорта: %s\n", r->name);                
    printf("Страна: %s\n",           r->country);
    printf("Стоимость: %d\n\n",      r->cost);
}
 
/* функция считывания структуры с файла. Принимает в качестве параметров
указатель на структурную переменную и указатель на файловую переменную.
Инициализирует поля структурной переменной данными из файла */
void readFromFile(Resort *r, FILE *fp)
{
    fscanf(fp, "%s", r->name);
    fscanf(fp, "%s", r->country);
    fscanf(fp, "%d", &r->cost);
}
 
 
/* <<<<<<----- реализация функций для работы с массивом структур ------>>>>>> */
/* функция вывода всех структур на экран. Принимает указатель на константный
(read-only) массив структурных переменных, его размер. */
void printAll(const Resort *arr, const int size)
{
    int i;                   /* параметр цикла */
    system("cls");           /* очистка экрана */
    for (i=0; i < size; i++) /* адрес каждого элемента массива */
        print(&arr[i]);      /* передаем в функцию print */
    
    printf("Назад");
    _getch();                /* пауза */
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru