argv和argc用于输入/输出文件

时间:2013-10-11 22:30:05

标签: c++ function data-structures file-io command-line-arguments

假设我有一个如此构造的代码:主要功能 - 打开文件,搜索并抓取特定变量的文本/数字,然后关闭。另一个文件被打开,搜索更多并关闭。然后,代码如下实现argv argc:

if (argc >= 5) {
    if (atoi(argv[1]) == 1) {
        compare();
    }

    if (atoi(argv[2]) == 2) {
        certainblood();
    }

    if (atoi(argv[3]) == 3) {
        longestpatient();
    }
}

所以在这里,如果我要运行program.exe 1,它应该显示该函数并执行该函数应该执行的操作。然后program.exe 2应该执行其他功能,依此类推。为什么它不接受我的变量并将它们传递给函数。它独自运行功能。即使我创建了一个函数来打开这两个文件并将它们放在argv中,它仍然可以执行该功能。为什么会这样?有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

如果有4个或更多参数,您只想检查argv[]值。你真的想在那里进行argc测试吗?

我认为你的意思是在每个argv[1]测试中检查if(现在你正在检查parm 1是否为1,如果parm 2是2,...)

答案 1 :(得分:0)

在不知道程序可能使用的其他参数的情况下,请尝试以下操作,省略argv >= 5检查,因为在您的示例中,您只提供一个参数(argc == 2):

if (atoi(argv[1]) == 1) {
    compare();
}

if (atoi(argv[1]) == 2) {    /* changed argv[2] to argv[1] */
    certainblood();
}

if (atoi(argv[1]) == 3) {    /* changed argv[3] to argv[1] */
    longestpatient();
}

argv[0]返回程序名称, argv[1]第一个参数, argv[2]第二个参数。