首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >argc和argv的澄清

argc和argv的澄清
EN

Stack Overflow用户
提问于 2017-02-01 13:56:03
回答 2查看 4.6K关注 0票数 0

我对什么是argc和argv有一些疑问,我似乎不能理解这个概念,因为我应该使用它们什么,我应该如何使用它们?

就像我有一个从命令行接收的程序,从-100000到100000之间的两个整数计算加法并打印结果,同时执行关于参数的te数及其正确性的所有所需的检查。

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int a, b;
    char ch;

    if (argc != 4)
    {
        printf("ERROR - Wrong number of command line parameters.\n");
        exit(1);

    }

    if (sscanf(argv[1], "%d", &a) != 1)
    {
        printf("ERROR - the first parameter (%s) is not a valid integer.\n",
                argv[1]);
        exit(2);
    }

    if (sscanf(argv[2], "%d", &b) != 1)
    {
        printf("ERROR - the second parameter (%s) is not a valid integer.\n",
                argv[2]);
        exit(2);
    }
    ch = argv[3][0];

    if (ch == 'a')
        printf("The sum result is %d\n", a + b);
    else if (ch == 'b')
        printf("The subtraction result is %d\n", a - b);
    else if (ch == 'c')
        printf("The multiplication result is %d\n", a * b);
    else if (ch == 'd')
    {
        if (b != 0)
            printf("The division result is %d\n", a / b);
        else
            printf("ERROR the second value shoulb be different than 0 \n");
    }
    else
        printf("ERROR parameter (%c) does not correspond to a valid value.\n",
                ch);
    return 0;
}

但是程序如何从命令行接收两个参数呢?我要把它们输入到哪里?我用的是密码锁。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-01 14:04:27

  • argc是从命令行调用程序时传递给程序的参数数。
  • argv是接收到的参数数组,它是字符串数组。

注意,程序的名称总是自动传递的。假设您的程序可执行文件是test,当您从终端调用时:

代码语言:javascript
复制
./text 145 643

argc将是3:程序名和两个数字

argv将是char*数组{"./text","145","643"}

票数 8
EN

Stack Overflow用户

发布于 2017-02-01 14:29:54

当您编写代码(比如hello.c )时,您可以从终端运行它,方法是从终端转到目录/文件夹,然后使用像gcc这样的编译器编译它。

gcc hello.c -o hello

如果您使用的是Windows,并带有像Turbo或Visual这样的编译器,那么它将创建一个.exe文件。这将创建一个可执行文件。

当您从命令行运行文件时,可以将命令行参数作为程序输入的一种方式。

在终端上,您可以使用./hello arg1 arg2,其中arg1arg2是它的命令行参数。要了解如何在Windows中使用像Turbo这样的编译器,也请参阅此链接

那么argcargv[]又是什么呢?您的main函数使用main(int argc, char *argv[])来获取命令行参数。

  • argc是传递的命令行参数数。在上述情况下,即为3。
  • argv[]是一个字符串数组,在本例中是3个字符串。argv[1]将等于"arg1“,argv[2]将等于"arg2”。"./hello“将出现在argv[0]中。

因此,您可以在命令行中给出命令行参数,无论是Linux还是Windows。上面的解释更多的是针对Linux。有关命令行参数,请参阅中的Turbo (我不建议使用Turbo ),以及Visual中的

要了解有关命令行参数的更多信息,可以阅读

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41981565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档