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

Передача данных из функции - C++

Восстановить пароль Регистрация
 
NobleTracer
1 / 1 / 0
Регистрация: 28.09.2012
Сообщений: 29
07.10.2012, 06:12     Передача данных из функции #1
Есть функция, которая должна считать структуру из файла и передать в основную программу саму структуру и кол-во элементов.
Структура:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
struct price
{
    char prod[20];
    char market[20]; // название товара и магазина
    int cost; // цена
};

А вот функция
C++
1
2
3
4
5
6
7
8
struct price readfile(struct price price_list[100])
{
    fstream file("price.txt", ios::in);
    int i ,n;
    for ( i = 0, n = 0; (file>>price_list[i].prod>>price_list[i].market>>price_list[i].cost).good(); ++i, ++n)
        cout<<price_list[i].prod<<(' ')<<price_list[i].market<<(' ')<<price_list[i].cost<<endl;
    return price_list[i];
}
вот надо передать значения price_list и n
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2012, 06:12     Передача данных из функции
Посмотрите здесь:

C++ Передача указателей в функции
Передача аргументов функции C++
Передача лямбда в функции C++
C++ Передача аргументов функции
Передача аргументов функции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.10.2012, 09:32     Передача данных из функции #2
Вы в функцию передаёте массив структур из основной программы? Наверное, да. Там он заполняется данными из файла. Единственное, что нужно вернуть - это n. Пусть функция возвращает int:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int readfile(struct price *price_list)
{
    fstream file("price.txt", ios::in);
    int i ,n;
    for ( i = 0, n = 0; (file>>price_list[i].prod>>price_list[i].market>>price_list[i].cost).good(); ++i, ++n)
        cout<<price_list[i].prod<<(' ')<<price_list[i].market<<(' ')<<price_list[i].cost<<endl;
    return n - 1;
}
 
int main()
{
 ...
 struct price price_list[100];
 int n = 0;
 n = readfile(price_list);
...
}
Или перадайте n в функцию по ссылке.
NobleTracer
1 / 1 / 0
Регистрация: 28.09.2012
Сообщений: 29
07.10.2012, 11:04  [ТС]     Передача данных из функции #3
Спасибо. Помогло. Не знал, что из функции вернётся уже не пустой массив.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.10.2012, 21:50     Передача данных из функции #4
Массив в функцию (в отличие от других переменных, передаваемых по значению ) передаётся как указатель на начало массива. Поэтому работа в функции идёт не с копией массива (что имеет место, в случае других переменных, передаваемых по значению), а с тем массивом, который создан в main().
Yandex
Объявления
07.10.2012, 21:50     Передача данных из функции
Ответ Создать тему
Опции темы

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