c语言 argv参数,C程序的输入参数(int argc, char **argv)

无论是操作系统中的很多命令,还是很多科学计算程序,都会存在参数输入,形如:

mybin -a10 -b100.0/23.0 infile

在C语言中,主要通过main函数的输入参数int argc与char **argv来控制(其它编程语言也是相同或相似的操作)

argc为输入参数的个数

argv为输入参数字符串,其中argv[0]为运行程序路径及名称,argv[1], argv[2], ...分别为输入参数段1,2,...

int main(int argc, char **argv){

int innum = 0;

int i;

int error = 0;

float evla, evlo, evdep, evmag;

float stla, stlo;

int outflag;

char inputfile[256];

// get input para

for(i=1; i

if(argv[i][0] == '-') {

switch(argv[i][1]) {

case 'L':

sscanf(&argv[i][2],"%f/%f/%f/%f",&evla,&evlo,&evdep,&evmag);

break;

case 'S':

sscanf(&argv[i][2],"%f/%f",&stla,&stlo);

break;

case 'F':

sscanf(&argv[i][2],"%d",&outflag);

break;

default:

error = 1;

break;

}

}

}

if(argc < 5 || error == 1){

fprintf(stderr, "Usage: mybin -L(evla/evlo/evdp/mag) -S(stla/stlo) -F(flag) INPUT.in\n");

return -1;

}

//

strcpy(inputfile,argv[5]);

}

上述代码段实现了读取4个输入参数段的过程,四个参数对应的argc为什么等于5呢?这是因为argv[0]为程序的路径和名称,在for(i=1; i

上述使用'switch'语句读取参数,并不要求参数段按照上述读取顺序排列,而是可以随意调换的,但是要求每个参数段都是以-作为起始标识,如果参数关键字argv[i][1]不在L, S, F三个中的一个,那么输入参数段的格式不对,此时error=1

最后一个参数必须是输入文件,该参数段就是一个字符串,并没有以-为起始标识,所以会进入switch代码段

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值