Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2013, 20:14   #1
millepetrozza
Пользователь
 
Регистрация: 22.09.2012
Сообщений: 33
По умолчанию Возвращение указателя на структуру

Код:
typedef struct 
{
  char name[30];
  int date;
}companys;


companys scan_names(int n)
{
  int i;
  companys* comp=(companys *)malloc(50 * sizeof(companys) );
  printf("Set names of companys:\n");
  for(i=0;i<50;i++)
  {
    scanf_s("%s", comp[i].name);
    fflush(stdin);
    if(comp[i].name[0] == '.')
    {
       i--;
       break;
    }
  }
  n=i;
  return *comp;
}

int main()
{
  companys  *comp;				
  int n=50;
  comp=&(scan_names( n ));

  return 0;
}
Принцип таков, что нужно ввести не более 50 наименований фирм через функцию и вернуть адрес указателя на заполненную структуру. Пробовал уже по всякому, но выскакивает ошибка requires "l-value".

Заполняется временный массив структур, и как в первый символ строки приходит точка, ввод останавливается, выделяется соответствующее место под массив нужных структур и наименования фирм переносятся.
millepetrozza вне форума Ответить с цитированием
Старый 15.03.2013, 20:23   #2
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Код:
companys* (звездень) scan_names
и не забудь потом delete сделать, а то потом проблем огребёшь
код ошибочный вообще-то т.к. нужно создать новый массив и уже в него копировать, а не писать n=i (бред)
GreenWizard вне форума Ответить с цитированием
Старый 15.03.2013, 20:34   #3
millepetrozza
Пользователь
 
Регистрация: 22.09.2012
Сообщений: 33
По умолчанию

Сначала так и было, но потом показалось,что вряд ли будет не лень читать такой длинный код, поэтому сократил его для возможности более быстрой читаемости другими. Оставил максимально мало из того, что по сути. Просто переделать описание забыл.
А free(arr) и проч в обоих модулях функций есть. Просто это только кусок работы, а так огромное спасибо
millepetrozza вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
возвращение символа С++ svkpro Помощь студентам 0 05.12.2012 23:43
Возвращение из функции указателя на двумерный массив _J_ Общие вопросы C/C++ 2 29.12.2011 01:34
Эспорт указателя на структуру C++ autochampion Общие вопросы C/C++ 0 30.03.2011 23:22
Возвращение стража.... Манжосов Денис :) Софт 0 18.09.2008 22:57