Как изменить указатель на структуру внутри функции void - PullRequest
0 голосов
/ 29 октября 2018

Я много раз пытался погуглить мою проблему, но так и не нашел ответа, который подходит моей проблеме. Мне нужно изменить указатель на структуру внутри функции (заполнить ее данными), а затем использовать этот указатель в качестве аргумента для других функций. У меня есть текстовый файл с несколькими отчетами, и я должен считать отчеты и заполнять все данные указателем на структуру. Что не проблема, я без проблем выделил память, без проблем прошел через файл и также заполнил указатель. Но я не могу понять, как использовать заполненный указатель вне функции.

struct report{
  char name[50];
  int id_number;
}

void function1(struct report **ptr){
  //do stuff like count the number of reports in file
  //and allocate memmory for pointer to structure
  //and fill the pointer to structure with data
}
int main() {
  struct report *pointer;
  function(pointer);
  //now I expect variable 'pointer' to be filled and ready to use by another functions
  return 0;
}

Подскажите, пожалуйста, какие решения? Спасибо за ваше время и помощь.

1 Ответ

0 голосов
/ 29 октября 2018

Пожалуйста, посмотрите на пример:

#include <stdlib.h>
#include <stdio.h>

struct report{
  char name[50];
  int id_number;
};

void foo(struct report **ptr){
  *ptr = malloc(sizeof(struct report));  // allocate memory
  (*ptr)->id_number = 42;  // fill the allocated memory
}

int main() {
  struct report *pointer;
  foo(&pointer);  // important part - pass to the foo() pointer to the pointer.

  printf("%d\n", pointer->id_number);

  free(pointer);  // do not forget to free the memory.
  return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...