【问题标题】:How can I remove the head of a main function?如何删除主要功能的头部?
【发布时间】:2011-02-02 03:30:59
【问题描述】:

我正在尝试从一个单独的二进制文件中移动一些代码并将其放在我的主程序中。不幸的是,我无法模仿主函数的初始化变量。

如何手动创建argcargv?谁能给我一些示例作业。

因为它看起来像这样:

int main(int argc, char *argv[])

我想我可以这样分配它们:

int argc=1;
char *argv[0]="Example";

但它不起作用。谁能告诉我这是怎么做到的?

【问题讨论】:

  • 你说的应该有效。你能发布一些你实际在做什么的代码吗?
  • 能否提供更完整的代码示例?你是如何“移动”这个函数的?
  • 你需要为你的 argv 数组分配空间,一个指针的空间,所以应该是char *argv[1] = {"Example"};
  • @roe:基本正确,但要完全正确,他确实需要argv[argc]是一个空指针,所以它应该是char *argv [2] = { "Example", NULL };跨度>
  • 参数也应该是可修改的,但字符串文字不是。

标签: c parameters main argv argc


【解决方案1】:

argv[] 数组的最后一个元素实际上是argv[argc],它是一个NULL 指针。

一些示例代码:

char *argv[] = { "first", "second", NULL }; 
int argc = sizeof(argv) / sizeof(*argv) - 1;

【讨论】:

    【解决方案2】:
    int argc = 3;
    char *argv[4];
    argv[0] = "fake /path/to/my/program";
    argv[1] = "fake arg 1";
    argv[2] = "fake arg 2";
    argv[3] = NULL;
    fakemain(argc, argv);
    

    【讨论】:

    • .. 或只是 char *argv[4] = {"fake /path/to/my/program", "fake arg 1", "fake arg 2", NULL} 为您节省一些房地产。
    猜你喜欢
    • 1970-01-01
    • 2020-03-28
    • 2018-07-31
    • 2014-07-13
    • 1970-01-01
    • 2012-12-23
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多