运行一个程序,我将文件名传递给 Main

Posted

技术标签:

【中文标题】运行一个程序,我将文件名传递给 Main【英文标题】:Running a program where I pass the filename into 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;
        
    

【问题讨论】:

How to take command line argument in Codeblock 10.05?的可能重复 【参考方案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,这段代码会起作用吗?

以上是关于运行一个程序,我将文件名传递给 Main的主要内容,如果未能解决你的问题,请参考以下文章

从批处理文件运行python脚本时,如何自动将输入值传递给python“输入”函数

我可以将 argv 从 main 传递给 execv 吗?

WPF如何获取命令行参数

main函数由哪个进程创建?

在 c 的 main 中传递参数

传递给子模块的 terraform 提供程序不起作用