c - int main(int argc, char *argv[]) 是必须写的吗,不能用其他名字代替argc和*argv[]?

标签 c visual-c++ command-line-arguments

我在这里遇到了一些真正的麻烦,在项目选项本身(在“配置属性”->“调试”中)中为 Visual Studio 提供命令行参数。

在“int main(int main_i)”不起作用之后,我写了这个“int main(int argc)”。在 MS visual studio 属性页的项目命令行参数中,我不确定应该写什么。我只想传递一个整数来指定文件是要读取还是写入文件,因此仅仅是一个 int argc。我不需要 char *argv[]。我在命令行参数文本框中尝试了一些值,但它在执行时没有到达 exe 文件,它显示了我根本没有输入的内容。

您能否提供一个简单的示例,说明我需要在 MSVS C++ 属性页的命令行参数空间中输入什么?我根本找不到任何有关如何将命令行参数提供给 MSVS 的示例。

我也不明白为什么我需要重建整个项目,即使我只是修改了命令行参数值??

最佳答案

如果您想让您的程序理解单个整数命令行参数,您仍然必须使用argcargv。应该这样做:

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

    if (argc < 2) {
        fprintf(stderr, "Need a command line argument.\n");
        exit(1);
    }

    int arg = atoi(argv[1]);
    // now you have an integer
    // do whatever with it...
}

C 标准要求 main 函数具有特定的参数集。允许的组合之一是 (int, char *[])。您可以根据需要命名参数,但它们几乎总是被称为argcargv

关于c - int main(int argc, char *argv[]) 是必须写的吗,不能用其他名字代替argc和*argv[]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11489387/

相关文章:

c# - 运行 C# clickonce 控制台应用程序

C fgets 缓冲区大小

c - 错误 C2143 : syntax error : missing ';' before 'type' when transferring pointer

c - Unix 中的信号处理

c++ - Qt5 连接导致 Unhandled Exception 或 HEAP CORRUPTION

c++ - 对重载函数错误的奇怪模棱两可的调用

c - 仅使用系统调用编写 LS 命令,而不使用任何 C 的库调用

c - glib命令行解析顺序敏感吗?

c - C中常量指针的奇怪行为

c - 返回值时赋值