【问题标题】:Running a program where I pass the filename into Main运行一个程序,我将文件名传递给 Main
【发布时间】:2015-01-22 15:28:03
【问题描述】:

好吧,我假设这个答案就在那里,但是人们是否有大量的人发布代码。我找不到它实际实施的地方。我正在使用代码块并将文件名传递给 main.但是当我单击运行时,没有传入文件名。如何在 Codeblocks 中传入文件名?我使用 cmd promt 还是什么?我想传入 input.txt 但我想不通。现在为了防止它崩溃,我只是把它默认为 input.txt。

nfile = fopen(argv[1], "r+");

    // Check for file open
    if (nfile == NULL) {
        nfile = fopen("input.txt", "r+"); 

        printf("FILE NAME: %s argv\n", argv);

        if (nfile == NULL) {
            printf("Failed to open file. Must have file name (input.txt)\n");
            return -1;
        }
    }

【问题讨论】:

标签: c parameter-passing command-line-arguments codeblocks


【解决方案1】:

查看main 程序的签名。它应该看起来像int main(int argc, char* argv[])argc 参数包含参数的数量,包括程序的文件名。 argv 是一个包含参数的以 null 结尾的字符串数组。第二个(索引 1)(如果存在)可能就是您要查找的内容。你去那里做什么?

看起来您已经在代码中使用了这些变量...您是否收到了编译错误?

要将命令行参数插入 CodeBlocks,Project > Set programs' arguments... 是您需要从菜单中访问的内容。

【讨论】:

  • 不,他们很好。我明白了,我只是不知道如何在单击运行时将字符串“input.txt”发送到 main。
  • 哦。如果您单击“运行”,您可能会从 IDE 调用它。查看您的项目设置并查找命令行参数属性。您使用的是哪个 IDE?
  • 没关系。你说的是代码块。编辑答案。
  • 啊,是的,我什至在发布之前就尝试过这个。当我单击它时,甚至没有任何反应。什么都没有打开,什么都没有改变。我的安装一定有问题。
  • 感谢您的帮助
【解决方案2】:
int main(int argc, char*argv[])

^ 这应该是函数头,要使用它,你必须使用命令提示符来传递参数。

例如:如果您使用 gcc 编译程序。 然后使用gcc yourprogram.c

之后使用./a.out input.txt 运行代码

【讨论】:

  • 感谢您的帮助。我还是想不通。无论如何,它似乎有效吗?如果将文件名传递给 main,这段代码会起作用吗?
猜你喜欢
  • 2011-06-17
  • 1970-01-01
  • 1970-01-01
  • 2022-07-26
  • 2023-03-28
  • 2017-06-14
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
相关资源
最近更新 更多