argc & argv的使用

  0. 使用你的命令提示字元 

在进入正题的时候,这里教你如何使用命令提示字元 (应该说如何会用命令列)。请您先按下开始->执行-> cmd.exe 按下 Enter。

好了后按下 "dir.exe /?",你会看到会有一堆参数跑出来,虽平常都说 "dir 这个指令是用来查目录、档案",但实际上dir 它是一个小的应用程序,副档名是 .exe,只是在命令提示字元里面我可以给它「外部参数」,比如说我键入

dir.exe C:\ 

它便会帮我找出 C:\ 底下所有档案、资料夹,我再键入

dir.exe C:\ /b 

它也会帮我找出 C:\ 底下所有资料夹与档案,只是这次是简单模式的输出。这里就可以开始说一点点 argc, argv 了。

第一次我键入  dir.exe C:\ ,总共有二个单字,所以 argc = 2;第一个字是 "dir.exe",所以 argv[0] = "dir.exe",第二个字是 "C:\",所以 argv[1] = "C:\\"。

第二次我键入 dir.exe C:\ /b,一样的道理,argc = 3,argv[0]="dir.exe",argv[1] = "C:\\",argv[2] = "/b"。


1. main 函式传回值 

「现今」的 main 函式传回值一律都是 int ,这也是您常看到 int main() 或是 int main(void);在早期,main 是可以用 void main() 方式,而现在部份 compiler 实做,即使你写

main()
{
    // dothing
}
 
很不建议这种写法,实际上它是把它看成

int main()
{
    // do thing
    return 0;


2. main 函式引数列 

在上面有提到传回值是 int ,而上面的例子引数列都是 void ,事实上目前比较通用、能接用的是二种写法,

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

第二种写法就是您要问的 argv,回到第 0 点所提到的,这种程序事实上就是要在命令提示字元底下下参数才会用到 argc, argv,你直接快点二下或是用 IDE 直接 compile - run,是看不出什么结果的。

3. 范例 1  更多: http://www.51240.com

这里先举一个简单的程序码,我要写的程序是,你于命令列输入了什么,我就把它输出出来。

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i=0;
    printf("共 %d 个参数\n", argc);
    for(i=0; i<argc; ++i){
    printf("第 %d 个参数:%s\n", i+1, argv[i]);
    }
    // system("pause"); // 用命令字元的话就不要再暂停
    return 0;
}
 
接下来就是重点了,怎么去测试这个程序?假设我生成是 Test.exe,为方便说明,先把它复制到 C:\ 底下。

开启你的命令提示字元,输入
"C:\Test.exe"  Param1 Param2 Param3

 
你会发现结果是

共 4 个参数
第 1 个参数: "C:\Test.exe"
第 2 个参数: Param1
第 3 个参数: Param2
第 4 个参数: Param3
 
由上叙述可知,任何程序的 argc 必大于等于1,而且 argv[0] 就是程序名字本身。

4. 范例 2 

现在假设要写的这个程序是,输入 sum.exe 1 2 3 4 56 7 ,后面跟一大堆数字,最后会把这些数字加总后再显示出来,于是我们便可这么做

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
    int i=0, sum=0;
    for(i=1; i<argc; ++i) // 注意,我们要的数字是从 argv[1] 开始
    {
    sum += atoi(argv[i]); 
    // 由于 argv[i] 是字串,但我们要算的是"数字" 的总合,
    // 所以用 atoi 将  argv[i] 这字串转成数字再加总
    }
    printf("Sum=%d\n", sum); // 最后再输出总合
    return 0;
}
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值