如何将Shell命令行参数传入Fortran程序实现数值平方计算
适配Shell命令行传参的Fortran代码修改方案
原有代码的问题
- 变量
x全程未初始化,计算时的取值是随机内存野值,结果没有实际意义 - 没有任何读取Shell命令行传入参数的逻辑,无法支持
./exe parameter的调用方式
具体修改点
- 在变量声明区域,新增命令行参数处理所需的辅助变量,分别用于存储参数计数、字符串格式的原始入参、数值读取的状态标记
- 在原有
fx=x**2的计算逻辑之前,插入命令行参数读取的全流程代码 - 补充基础的参数合法性校验,避免用户未传参、传入非数字内容时程序直接异常崩溃
修改后的完整可运行代码
PROGRAM square_calc REAL*8 :: x, fx ! 命令行处理所需的辅助变量 INTEGER :: argc, ierr CHARACTER(len=32) :: arg_str ! 获取命令行传入的用户参数总数 argc = COMMAND_ARGUMENT_COUNT() ! 校验是否传入了计算所需的参数 IF (argc < 1) THEN PRINT *, "正确调用格式:./exe 待计算平方的数值" STOP END IF ! 读取用户传入的第一个参数(注:程序自身路径为第0位参数,用户输入的内容从序号1开始计数) CALL GET_COMMAND_ARGUMENT(1, arg_str) ! 将字符串格式的入参转换为双精度浮点数,赋值给变量x READ(arg_str, *, IOSTAT=ierr) x ! 校验入参是否为合法数字 IF (ierr /= 0) THEN PRINT *, "传入的参数不是合法数字,无法完成计算" STOP END IF fx = x ** 2 PRINT *, 'The square of ', x, ' is ', fx END PROGRAM square_calc
实际使用方式
代码编译生成可执行文件后,直接在Shell中按照约定格式执行即可,例如执行./exe 7,程序会自动读取参数7,计算并输出平方结果49。
内容的提问来源于stack exchange,提问作者user10156341
相关产品推荐
相关产品推荐

