700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C语言——命令行参数

C语言——命令行参数

时间:2021-02-12 08:35:08

相关推荐

C语言——命令行参数

命令行参数

参考书 << C Primer Plus >>

在图形界面普及之前都使用命令行界面。DOS和UNIX就是例子。Linux终端提供类UNIX命令行环境。命令行是在命令行环境中,用户为运行程序输入命令的行。假设一个文件中有一个名为fuss的程序。在UNIX环境中运行该程序的命令行是:

$ fuss

或者在Windows命令提示模式下是:

C> fuss

命令行参数是同一行的附加项。如下例:

$ fuss -r Ginger

一个C程序可以读取并使用这些附加项。

C编译器允许main()没有参数或者有连个参数(一些实现允许main()有更多的参数,属于对标准的扩展)。main()有两个参数时,第1个参数是命令行中的字符串数量。过去,这个int类型的参数被称为argc(表示参数计数,argument

count)。系统用空格表示一个字符串的结束和下一个字符串的开始。因此,上面的repeat示例中包括命令名共有4个字符串,其中后3个供repeat使用。该程序把命令行字符串储存在内存中,并把每个字符串的地址储存在指针数组中。而该数组的地址则被储存在main()的第2个参数中。按照惯例,这个指向指针的指针称为argv(表示参数值,argument

value)。如果系统允许(一些操作系统不允许这样),就把程序本身的名称赋给argv[0],然后把随后的第1个字符串赋给argv[1],依次类推。

顺带一提,许多环境(包括UNIX和DOS)都允许用双引号把多个单词括起来形成一个参数。例如: repeat “I an hungry”

now 这行命令把字符串“I am hungry”赋给argv[1],把“now”赋给argv[2]。

集成环境中的命令行参数

Windows集成环境(如Xcode、Microsoft Visual C++和Embarcadero C++

Builder)都不用命令行运行程序。有些环境中有项目对话框,为特定项目指定命令行参数。其他环境中,可以在IDE中编译程序,然后打开MS-DOS窗口在命令行模式中运行程序。但是,如果你的系统有一个运行命令行的编译器(如gcc)会更简单。

Macintosh中的命令行参数

如果使用Xcode 4.6(或类似的版本),可以在Product菜单中选择Scheme选项来提供命令行参数,编辑Scheme,运行。然后选择Argument标签,在Launch的Arguments

Pass中输入参数。或者进入Mac的Terminal模式和UNIX的命令行环境。然后,可以找到程序可执行代码的目录(UNIX的文件夹),或者下载命令行工具,使用gcc或clang编译程序。

/* count.c -- 使用标准 I/O */#include <stdio.h>#include <stdlib.h> //提供 exit() 的原型int main(int argc, char *argv[]){int ch; //读取文件时,储存每个字符的地方FILE *fp; // "文件指针"unsigned long count = 0;if(argc != 2)//没有提供任何参数{printf(“ Usage: %s filename\n”, argc[0]);exit(EXIT_FAILURE);}if((fp = fopen(argv[1],"r"))== NULL){printf(“Can‘t open %s\n”,argv[1]);exit(EXIT_FAILURE);}while((ch = getc(fp))!= EOF){putc(ch,stdout); //与putchar(ch); 相同count++;}fclose(fp);printf(“File %s has %lu characters\n”, argv[1],count);returrn 0;}

应当指出的是,argv[0]存储程序的名称,argv[1]是一个指向第一个命令行参数的指针,*argv[n]是最后一个参数,如果没有提供任何参数,argc将为1,否则,如果传递了一个参数,argc将被设置为2。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。