文章目录
程序参数
许多命令行运行的C程序都会有可选(或必须要有)的参数,如 gcc prog.c -o prog,“prog.c”、"-o"、"prog"这些都是参数。
参数中有些会被称为选项(标志、开关),选项参数(options)往往被用作调整程序的功能,比如 -o 就是gcc的一个选项,它可以指定输出文件的名字(默认的输出文件名为a.out);而另外的一些参数当然就是非选项参数了。
命令行在LINUX/UNIX中一般都会遵守一些准则,在X/Open规范中可以找到详细具体的内容。下面是一些常见且简单的描述:
- 单字符选项参数一般要加一个短横杠( - ),也就是减号。如,gcc命令中的 -o
- 长选项参数一般要加双短横杠( – ),就是两个连续的减号。如, gcc --help 、 node --version (很多命令行都会有这两个选项,help用于查看手册、version用于查看版本)
- 参数之间要用空格隔开。如果一个参数中包含了空白字符,就需要用双引号把整个参数闭合起来。如, Hello World 表示两个参数(一个Hello、一个World);而 “Hello World” 则代表的是一个参数。
*注:并不是所有的命令行都遵守了这个准则
简单的带参数示例
要编写带参数的C程序就需要给main函数传入两个参数:int argc、char *argv[] .
前者是一个整型参数,代表着一条命令行中字符串的个数(字符串之间用空格隔开,含有空格的字符串要用双引号闭合,这个和上面说过的一样);后者是一个数组,存放着指向每个字符串的指针。
以一条命令 $ myecho hello world ! 为例($代表的是命令提示符,这个应该很清楚它不是命令的一部分),如下图所示:

当运行这条命令时,argc就被赋值为4,而argv[]就会存放各个字符串的指针。
需要注意的是:
- argv[]存放的是指针,而不是字符
- 虽然myecho是程序文件的名称而非参数,但它确实是命令的一部分,字符串的个数要算上它!所以argc是4而非3
如此一个带参数的C程序大致如下所示:
int main(int argc, char *argv[])
{
//...CODE...
return 0;
}
一个简单的示例:
//FILENAME: myprogram.c
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
int arg = 0;
while(arg < argc)
{
printf("%s\n", argv[arg]);
arg++;
}
printf("argc = %d\n", argc);
exit(0)<
最低0.47元/天 解锁文章
1842

被折叠的 条评论
为什么被折叠?



