标题:C语言main函数带命令行参数的使用
只看楼主
飞机火车
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-1-23
结帖率:80%
已结贴  问题点数:20 回复次数:10 
C语言main函数带命令行参数的使用
假设程序编译后生成的可执行文件为mycal.exe.。在命令行提示符下,通过在windows开始菜单执行cmd命令,出现:c:\>,键入mycal  100+200 运行的结果为 300;键入mycal  100*200 运行的结果为20000 等。
想要源代码,谢谢
搜索更多相关主题的帖子: windows 执行文件 源代码 C语言 
2017-04-01 14:35
飞机火车
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-1-23
得分:0 
一直弄了好久,不太理解main参数

没有解决不了的事情,除非逻辑本身是错的
2017-04-01 14:40
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:14 
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main(int argc,char *argv[])
{
    if(argc<3)
    {
        printf("参数不足\n");
        return 0;
    }
    long a = strtol(argv[1], NULL, 10);
    long b = strtol(argv[2], NULL, 10);
    printf("%s +%s  =%ld  \n",argv[1],argv[2],a+b);
    return 0;
   
}
/*
D:\c_source\w16\w16\Debug>w16
参数不足

D:\c_source\w16\w16\Debug>w16  100 220
100 +220  =320

D:\c_source\w16\w16\Debug>
*/


此代码一定要在cmd模式下运行 而不要在调试模式下运行

DO IT YOURSELF !
2017-04-01 14:49
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main(int argc,char *argv[])
{
    printf("本次执行共传入了%d个参数\n",argc);
    for(int i=0;i<argc;i++) printf("其中 第%d个参数是 %s \n",i,argv[i]);
    return 0;
   
}
/*
D:\c_source\w16\w16\Debug>w16  100 220 ;odsj lsdjkla lj lsalkjkd
本次执行共传入了7个参数
其中 第0个参数是 w16
其中 第1个参数是 100
其中 第2个参数是 220
其中 第3个参数是 ;odsj
其中 第4个参数是 lsdjkla
其中 第5个参数是 lj
其中 第6个参数是 lsalkjkd
*/


简单一点

DO IT YOURSELF !
2017-04-01 14:53
飞机火车
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-1-23
得分:0 
回复 3楼 wp231957
谢谢

没有解决不了的事情,除非逻辑本身是错的
2017-04-01 15:13
yanzy
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:104
专家分:372
注 册:2017-2-7
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>

int f(int x, int y, char ch)
{
    int n;
    switch (ch)
    {
    case '+':n = x + y; break;
    case '-':n = x - y; break;
    case '*':n = x*y; break;
    case '/':n = x / y; break;
    default:printf("error.\n");    exit(EXIT_FAILURE);
    }
    return n;
}

int main(int argc, char *argv[])
{
    if (argc != 4)
    {
        printf("error.\n");
        return;
    }
    int a, b;
    a = atoi(argv[1]);
    b = atoi(argv[3]);
    char ch = argv[2][0];
    printf("运行的结果为:%d\n", f(a, b, ch));

    return 0;
}


我也来一个,输入数字和字符间要空格,如100 + 200
2017-04-01 15:29
初学编程的人
Rank: 2
等 级:论坛游民
威 望:2
帖 子:90
专家分:84
注 册:2017-3-12
得分:0 
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    if(argc != 4)
    {
        printf("wrong input!\n");
        return 0;
    }
    switch (argv[2][0]){
    case '-':
        printf("%d", atoi(argv[1])-atoi(argv[3]));
        break;
    case '+':
        printf("%d", atoi(argv[1])+atoi(argv[3]));
        break;
    case '*':
        printf("%d", atoi(argv[1])*atoi(argv[3]));
        break;
    case '/':
        printf("%d", atoi(argv[1])/atoi(argv[3]));
        break;
    default:
        printf("wrong input!\n");
        break;
    }
    return 0;
}
也来一个,对argv用下标之前需要对argc大小做检查,否则编译提示出错,好像是这样。
2017-04-01 17:13
飞机火车
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-1-23
得分:0 
回复 6楼 yanzy
很接近正解了谢谢

没有解决不了的事情,除非逻辑本身是错的
2017-04-01 17:59
飞机火车
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-1-23
得分:0 
回复 7楼 初学编程的人
谢谢  

没有解决不了的事情,除非逻辑本身是错的
2017-04-01 18:08
飞机火车
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-1-23
得分:0 
输完一个数,运算符好像必须要空格一个,不然就error了

没有解决不了的事情,除非逻辑本身是错的
2017-04-01 18:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-475710-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.327294 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved