C程序总是从mian函数开始执行的。mian函数的原型是:
int main(int argc,char *argv[]);
其中argc是命令行参数的个数,argv是命令行各个参数的指针,传入的参数类型是char字符串。
当内核执行C程序时 ,在调用main前,调用一个特殊的启动例程,可执行文件将此启动例程指定为程序的起始地址,这是由连接编辑器决定,而连接编辑器是由C编译器调用。启动例程从内核取得命令行参数和环境变量,然后按上述方式为调用main函数作出安排。
下面举个例子说明如何使用main函数的输入参数。
#include<stdio.h>
#include<stdlib.h>
int num;
int main(int argc,char argv[])
{
for(int i = 0; i < argc ;i++)
{
printf("argv[%d]:%s\r\n",i,argv[i]);
}
return 1;
}
编译此程序 ,并在shell中运行。此处将源文件命名为main.c.且编译生成的 执行文件为main.
执行程序:
./main data1 data2 data3
输出:
argv[0] :./main
argv[1] :data1
argv[2] :data2
argv[2] :data3
可以看出argv[0]为执行 程序的命令./main.
假如想将输入的数值转换为数值类型变量,比如
./main 1234
可调用stdlib头文件中的atoi函数
num = atoi(argv[1]); //num = 1234;
函数名称: atoi
函数原型: int atoi(char *str)
函数功能: 将字符串转换成一个整数值
函数返回: 转换后的数值
参数说明: str-待转换为整型数的字符串
ISOC 和POSX都要求argv[argc]为一个空指针,因此可将上述处理参数的循环更改为;
for (i = 0;*argv != null,i++)
{
}
利用函数的该特性,便可以实现各个命令的编写。