700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > c语言 argv参数 C程序的输入参数(int argc char **argv)

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

时间:2018-08-06 04:19:05

相关推荐

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代码段

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