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

Как забрать из функции структуру - C++

Восстановить пароль Регистрация
 
Ghoster
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 35
20.07.2013, 15:44     Как забрать из функции структуру #1
Сама структура:
struct product
C++
1
2
3
4
5
6
7
8
9
10
{    
       char name[100];
       char exist[100];
       char price[100];
       char kolv[100];
       char srgod[100];
       char data_post[100];
       char rank[100];
       int temp[100];
} t;
Функция:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int read (product* pro)
{
    ifstream f;
    int i=0, n;
    f.open( "text.txt");
      while(!f.eof())
      {  f.getline(pro[i].name, 100, ',');
         f.getline(pro[i].exist, 100, ',');
         f.getline(pro[i].price, 100, ',');
         f.getline(pro[i].kolv, 100, ',');
         f.getline(pro[i].srgod, 100, ',');
         f.getline(pro[i].data_post, 100, ',');
         f.getline(pro[i].rank, 100, ';');
         i++; }
         f.close();
       n=i-1;
return pro[];
}
Как приравнять уже заполнению структуру к структуре в main() ??? (Желательно без указателей)
Ошибочный вариант:
C++
1
2
3
4
int main(){
//product* pro=new product[n]; так создаётся новый эл-т массива структур. 
pro[]=read(pro);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2013, 15:44     Как забрать из функции структуру
Посмотрите здесь:

Указатель на структуру как пареметр функции C++
Рассматривая комплексное число как структуру, состоящую из двух вещественных полей, составить функции выполнения четырех арифметических операций C++
C++ Разработать структуру и функции для работы с шестнадцатиричными числами
как забрать то что после комы? C++
C++ как передать структуру в функцию, чтобы после выполнения функции он(массив в данном случае) вернулся измененным?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
20.07.2013, 15:47     Как забрать из функции структуру #2
Цитата Сообщение от Ghoster Посмотреть сообщение
Ошибочный вариант:
вполне нормальный вариант с точки зрения передачи в функцию. Другое дело, что возвращать не стоит массив. А просто вызвать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void read (product* pro)
{
    ifstream f;
    int i=0, n;
    f.open( "text.txt");
      while(!f.eof())
      {  f.getline(pro[i].name, 100, ',');
         f.getline(pro[i].exist, 100, ',');
         f.getline(pro[i].price, 100, ',');
         f.getline(pro[i].kolv, 100, ',');
         f.getline(pro[i].srgod, 100, ',');
         f.getline(pro[i].data_post, 100, ',');
         f.getline(pro[i].rank, 100, ';');
         i++; }
         f.close();
       n=i-1;
}
int main(){
  //product* pro=new product[n]; так создаётся новый эл-т массива структур. 
  read(pro);
  return 0;
}
Ну и позаботиться, чтоб размеры читаемых даных совпадали с массивом.
Ghoster
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 35
20.07.2013, 16:02  [ТС]     Как забрать из функции структуру #3
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Код C++

void read (product* pro)
{
* * ifstream f;
* * int i=0, n;
* * f.open( "text.txt");
* * * while(!f.eof())
* * * { *f.getline(pro[i].name, 100, ',');
* * * * *f.getline(pro[i].exist, 100, ',');
* * * * *f.getline(pro[i].price, 100, ',');
* * * * *f.getline(pro[i].kolv, 100, ',');
* * * * *f.getline(pro[i].srgod, 100, ',');
* * * * *f.getline(pro[i].data_post, 100, ',');
* * * * *f.getline(pro[i].rank, 100, ';');
* * * * *i++; }
* * * * *f.close();
* * * *n=i-1;
}
int main(){
* //product* pro=new product[n]; так создаётся новый эл-т массива структур.
* read(pro);
* return 0;
}
В main() всё равно не заполненная структура получается! Мне в main() надо получить заполненную структуру..
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
20.07.2013, 16:09     Как забрать из функции структуру #4
C++
1
2
3
4
5
6
int main(){
  product pro;
  read( &pro );
  cout << pro.name << endl;
  return 0;
}
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
20.07.2013, 16:10     Как забрать из функции структуру #5
Цитата Сообщение от lazybiz Посмотреть сообщение
int main(){
* product pro;
* read( &pro );
* return 0;
}
у него там массив вообще-то
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
20.07.2013, 16:14     Как забрать из функции структуру #6
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
у него там массив вообще-то
А с массивом проблем нет.
C++
1
2
3
4
5
6
int main(){
  product *pro = new product [10];
  read( pro );
  cout << pro[0].name << endl;
  return 0;
}
Добавлено через 1 минуту
Ghoster, какую роль играет переменная n в функции read ?
Ghoster
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 35
20.07.2013, 16:25  [ТС]     Как забрать из функции структуру #7
Цитата Сообщение от lazybiz Посмотреть сообщение
Ghoster, какую роль играет переменная n в функции read ?
Здесь никакой. Это Я узнаю количество эл-тво в массиве структур.
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
20.07.2013, 16:27     Как забрать из функции структуру #8
Чтобы узнать количество элементов можно сделать так:
C++
1
2
3
    ...
    return i;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2013, 16:33     Как забрать из функции структуру
Еще ссылки по теме:

Как правильно написать функцию, которая редактирует структуру по полю Name и возвращает новую, исправленную структуру?.. C++
Как создать структуру-список, поля которой — ссылка на такую же структуру C++
C++ Вызов функции с ссылкой на структуру в качестве параметра

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

Или воспользуйтесь поиском по форуму:
Ghoster
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 35
20.07.2013, 16:33  [ТС]     Как забрать из функции структуру #9
Всем спасибо, разобрался)
Yandex
Объявления
20.07.2013, 16:33     Как забрать из функции структуру
Ответ Создать тему
Опции темы

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