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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ghoster
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 35
#1

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

20.07.2013, 15:44. Просмотров 352. Ответов 8
Метки нет (Все метки)

Сама структура:
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);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2013, 15:44
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как забрать из функции структуру (C++):

Указатель на структуру, как параметр функции - C++
Господа программисты! Прошу вашей помощи! Помогите передать функции в качестве аргумента указатель на структуру. Вот что есть: struct...

Использование указателя на структуру как аргумента функции - C++
Я написал функцию, которая принимает указатель на структуру как аргумент функции, но компилятор выдаёт странную ошибку о преобразовании...

как забрать то что после комы? - C++
здравствуйте! есть число! 13.845 как мне с него забрать только 845?

Как создать структуру-список, поля которой — ссылка на такую же структуру - C++
Суть вопроса в том, как создать структуру-список, поля которой - ссылка на сл. элемент(такую же структуру) и ссылка на объект, относящийся...

как передать структуру в функцию, чтобы после выполнения функции он(массив в данном случае) вернулся измененным? - C++
const int size = 256; struct MARKER { char mark; } void processing(MARKER struct_m) { //тут какие-то изменения...

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

8
Kuzia domovenok
2130 / 1959 / 197
Регистрация: 25.03.2012
Сообщений: 6,834
Записей в блоге: 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;
}
Ну и позаботиться, чтоб размеры читаемых даных совпадали с массивом.
1
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() надо получить заполненную структуру..
0
castaway
Эксперт С++
4926 / 3033 / 372
Регистрация: 10.11.2010
Сообщений: 11,084
Записей в блоге: 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;
}
0
Kuzia domovenok
2130 / 1959 / 197
Регистрация: 25.03.2012
Сообщений: 6,834
Записей в блоге: 1
20.07.2013, 16:10 #5
Цитата Сообщение от lazybiz Посмотреть сообщение
int main(){
* product pro;
* read( &pro );
* return 0;
}
у него там массив вообще-то
0
castaway
Эксперт С++
4926 / 3033 / 372
Регистрация: 10.11.2010
Сообщений: 11,084
Записей в блоге: 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 ?
1
Ghoster
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 35
20.07.2013, 16:25  [ТС] #7
Цитата Сообщение от lazybiz Посмотреть сообщение
Ghoster, какую роль играет переменная n в функции read ?
Здесь никакой. Это Я узнаю количество эл-тво в массиве структур.
0
castaway
Эксперт С++
4926 / 3033 / 372
Регистрация: 10.11.2010
Сообщений: 11,084
Записей в блоге: 10
Завершенные тесты: 1
20.07.2013, 16:27 #8
Чтобы узнать количество элементов можно сделать так:
C++
1
2
3
    ...
    return i;
}
0
Ghoster
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 35
20.07.2013, 16:33  [ТС] #9
Всем спасибо, разобрался)
0
20.07.2013, 16:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2013, 16:33
Привет! Вот еще темы с ответами:

Рассматривая комплексное число как структуру, состоящую из двух вещественных полей, составить функции выполнения четырех арифметических операций - C++
Задание 3. Рассматривая комплексное число как структуру, состоящую из двух вещественных полей, составить функции выполнения четырех...

Как узнать, что есть данные для ввода, которые можно забрать std::cin - C++
Всем здравствуйте! У меня есть параллельный поток, в котором нужно собирать данные с помощью std::cin. Но чтобы произвести эту...

Вызов функции с ссылкой на структуру в качестве параметра - C++
Добрый день, совсем недавно начал изучение С++. Создал я небольшую программку, и сложился соответственно вопрос. Есть такой код: ...

Структуры и функции. Передача указателя на структуру в функцию - C++
Всем привет, ребята! Вообще ничего не соображаю сейчас, так как ночь. А кофе нету. Короче, ближе к делу. Хочу написать функцию, которая...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru