这是来自csh脚本的行
./model2grd $model -D$nx/$ny/$nz -O$x0/$y0 -I$dx/$dy -L$layer -C$coverage -Avel.dat -Gvel.grd
这是model2grd.c
的一部分for (i = 2; i < argc; i++) {
if (argv[i][0] == '-') {
switch (argv[i][1]) {
case 'G':
grdfile = &argv[i][2];
lgrd = TRUE;
break;
case 'C':
cov = &argv[i][2];
lcov = TRUE;
break;
case 'A':
xyzfile = &argv[i][2];
lxyz = TRUE;
break;
case 'D':
sscanf(&argv[i][2],"%d/%d/%d",&nx,&ny,&nz);
break;
case 'I':
sscanf(&argv[i][2], "%lf/%lf", &dx, &dy);
break;
case 'O':
sscanf(&argv[i][2], "%lf/%lf", &xmin, &ymin);
break;
case 'L':
layer = atoi(&argv[i][2]);
break;
case 'N':
nan = (float)atof(&argv[i][2]);
break;
case 'Z':
cvalue = (float)atof(&argv[i][2]);
break;
case 'V':
verbose = TRUE;
break;
default:
break;
}
}
}
这是否意味着它需要D(nx,ny,nz),O(xmin和ymin),L层和C覆盖?是否Avel.dat和Gvel.grd输入文件?
答案 0 :(得分:3)
Avel.dat
和Gvel.grd
不是输入文件。再看一下解析参数。
switch (argv[i][1]) {
case 'G':
grdfile = &argv[i][2];
lgrd = TRUE;
break;
考虑这个论点:
-Gvel.grd
用简单的英语,switch
检查每个参数的第二个字符。在这种情况下,-Gvel.grd
是参数,因此它会查看G
。通过该测试,case语句然后在字符串中的G
之后立即派生字符的地址。换句话说,v
。
因此,文件名实际上是vel.grd
。您应该能够将相同的逻辑应用于遵循相同模式的其余参数。