1

假设我的代码结构如下: Main 函数 - 打开一个文件,搜索并将文本/数字抓取到特定变量,然后关闭。另一个文件被打开,搜索更多并关闭。然后,实现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 的功能,它仍然没有执行该功能。为什么会这样?任何人都可以帮忙吗?

4

2 回答 2

0

您是说仅在argv[]有 4 个或更多参数时才检查值。你真的想要那个 argc 测试吗?

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

于 2013-10-11T22:35:25.990 回答
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]第二个参数。

于 2013-10-11T22:36:04.060 回答