从函数修改struct?

时间:2010-11-19 22:56:21

标签: c pointers struct

我想修改parse_commandline()中items结构中的文件。

我可以毫无问题地使用strncpy修改main()中的items->文件,但不能使用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 个答案:

答案 0 :(得分:1)

执行此操作的方法是将指向item的指针传递给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);
  ...
}

答案 1 :(得分:0)

将结构传递给C中的函数与传递任何其他变量没有什么不同。在您的情况下,您应该通过引用来完成它,以便您可以修改调用者的结构:

void parse_commandline(int argc, char *argv[], items *theItems)
相关问题