gpt4 book ai didi

Csh脚本调用C程序,参数问题

转载 作者:行者123 更新时间:2023-11-30 18:38:05 25 4
gpt4 key购买 nike

这是 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 是输入文件吗?

最佳答案

Avel.datGvel.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。您应该能够将相同的逻辑应用于遵循相同模式的其余参数。

关于Csh脚本调用C程序,参数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35038506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com