就是想知道c的命令行有什么用?报错 -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

就是想知道c的命令行有什么用?报错 

kun坤 2020-06-10 09:41:19 210

各位大神,就是想知道c的命令行有什么用,书上讲的没看懂。
我就是想知道为什么要用 int main(int argc,char *argv[])?什么时候会用它?
有的程序里还会用它,直接在程序里定义变量好了,为什么要用命令行?
命令行里除了文件名其他的字符串可以更改,改了有什么意义?
命令行是不是就是声明这个文件要干什么?我试过,在编译器里没什么用啊?
好郁闷  就这个看不懂

编译器
分享到
取消 提交回答
全部回答(1)
  • kun坤
    2020-06-11 10:12:49

    这是程序的入口啊,没有它怎么执行? ###### 用过字符操作界面吗?
    ls -a
    -a 就会被输入到main()中,成为参数 ######比如你想写一个小程序,计算数字1到n之间的总和,这个n由用户输入,这时你就要用main函数的参数了######哦 是这个意思,不能在程序里定义n?###### 谢谢各位,3q ###### 哈,这个是唯一的可变信息的入口。例如:
    一个程序可以存在自己的参数配置文件,对该文件解析后设定这些参数。但该文件路径名你想不固定,那么还是需要通过上述参数给入。
    c标准支持 main (void)的接口。但是对于我带的团队,仍然禁止使用main(void)。。。 ######argc是参数个数,*argv[]是参数数组,用来接收命令行参数,怎么会没有用.

    #include <stdio.h>nano ab.c

    #include <stdio.h>

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

        fprintf(stderr,"argc: %d\n",argc);

        int i;

        for(i=0;i<argc;i++) {

            fprintf(stderr,"argv[%d]: %s\n",i,argv[i]);

        }

        return 0;

    }

    编译: gcc ab.c -o ab

    运行: ./ab -c10 -n500 http://127.0.0.1/index.php

    结果:

    argc: 4

    argv[0]: ./ab

    argv[1]: -c10

    argv[2]: -n500

    argv[3]: http://127.0.0.1/index.php

    Linux上在Bash里运行程序后使用 echo $? 查看返回值.

    Windows上在CMD里运行程序后使用 echo %ERRORLEVEL% 查看返回值.

    main函数的返回值用于说明程序的退出状态.如果返回0,则代表程序正常退出,返回其它数字的含义则由系统决定.

    return 0;  执行 echo $? 值为 0

    return 2;  执行 echo $? 值为 2

    return 1;  执行 echo $? 值为 1

    return -1; 执行 echo $? 值为 255

    return -2; 执行 echo $? 值为 254

    ######

    引用来自“中山野鬼”的评论

    哈,这个是唯一的可变信息的入口。例如: 一个程序可以存在自己的参数配置文件,对该文件解析后设定这些参数。但该文件路径名你想不固定,那么还是需要通过上述参数给入。 c标准支持 main (void)的接口。但是对于我带的团队,仍然禁止使用main(void)。。。 明白了,这就是我想了解的意思,谢谢 这是程序的入口啊,没有它怎么执行? ###### 用过字符操作界面吗? ls -a -a 就会被输入到main()中,成为参数 ######比如你想写一个小程序,计算数字1到n之间的总和,这个n由用户输入,这时你就要用main函数的参数了######哦 是这个意思,不能在程序里定义n?###### 谢谢各位,3q ###### 哈,这个是唯一的可变信息的入口。例如: 一个程序可以存在自己的参数配置文件,对该文件解析后设定这些参数。但该文件路径名你想不固定,那么还是需要通过上述参数给入。 c标准支持 main (void)的接口。但是对于我带的团队,仍然禁止使用main(void)。。。 ######argc是参数个数,*argv[]是参数数组,用来接收命令行参数,怎么会没有用.

    #include <stdio.h>nano ab.c

    #include <stdio.h>

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

        fprintf(stderr,"argc: %d\n",argc);

        int i;

        for(i=0;i<argc;i++) {

            fprintf(stderr,"argv[%d]: %s\n",i,argv[i]);

        }

        return 0;

    }

    编译: gcc ab.c -o ab

    运行: ./ab -c10 -n500 http://127.0.0.1/index.php

    结果:

    argc: 4

    argv[0]: ./ab

    argv[1]: -c10

    argv[2]: -n500

    argv[3]: http://127.0.0.1/index.php

    Linux上在Bash里运行程序后使用 echo $? 查看返回值.

    Windows上在CMD里运行程序后使用 echo %ERRORLEVEL% 查看返回值.

    main函数的返回值用于说明程序的退出状态.如果返回0,则代表程序正常退出,返回其它数字的含义则由系统决定.

    return 0;  执行 echo $? 值为 0

    return 2;  执行 echo $? 值为 2

    return 1;  执行 echo $? 值为 1

    return -1; 执行 echo $? 值为 255

    return -2; 执行 echo $? 值为 254

    ######

    引用来自“中山野鬼”的评论

    哈,这个是唯一的可变信息的入口。例如: 一个程序可以存在自己的参数配置文件,对该文件解析后设定这些参数。但该文件路径名你想不固定,那么还是需要通过上述参数给入。 c标准支持 main (void)的接口。但是对于我带的团队,仍然禁止使用main(void)。。。 明白了,这就是我想了解的意思,谢谢
    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题