您的位置:首页 > 其它

argc & argv的使用

2011-08-11 19:46 302 查看
 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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  compiler c system 测试 ide