Изменить структуру из функции? - PullRequest
1 голос
/ 20 ноября 2010

Я хочу изменить файл в структуре элементов из parse_commandline ().

Я могу без проблем изменить items-> file из main () с помощью strncpy, но не из parse_commandline ().Мне нужно изменить parse_commandline (), чтобы он мог получать информацию об элементах из main (), но я не знаю как?

typedef struct {
    int pack_01;
    int pack_02;
    char file[100];
} items;

static items character_y = { 1, 1 }

parse_commandline(int argc, char *argv[])
{

/* PARSE COMMANDLINE ARGUMENTS */

}

int main(int argc, char* argv[])
{
    items *ptr_items = &character_y;

    parse_commandline(argc,argv);

    return 0;
}

Ответы [ 2 ]

1 голос
/ 20 ноября 2010

Способ сделать это - передать указатель на item s функции parse_commandline и позволить функции обновить структуру на основе аргументов.

parse_commandline(int argc, char *argv[], items* pItems) {
  pItem->pack_01 = 42;
  ...
};

int main(int argc, char* argv[]) {
  items items;
  parse_commandline(argc, argv, &items);
  ...
}
0 голосов
/ 20 ноября 2010

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

void parse_commandline(int argc, char *argv[], items *theItems)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...