我将两个值传递给我的Fortran程序,我需要获取这些参数的总和并将其打印为结果:
我有读取参数的程序如下:
PROGRAM Argtest
IMPLICIT NONE
integer*4 nargs,i
character arg*80
nargs = iargc()
do i = 0,nargs
call getarg(i, arg)
print '(a)', arg
end do
END
我传递了值10和20。 我试过这样:
PROGRAM Argtest
IMPLICIT NONE
integer:: nargs,i
character:: arg
integer:: num1
integer:: num2
integer:: result
nargs = iargc()
do i = 1,nargs
call getarg(i, arg)
!print *, arg
IF( i == 1) THEN
num1 = ichar(arg)
ELSE IF(i == 2) THEN
num2 = ichar(arg)
ELSE
end IF
end do
result = num1+num2
print *, num1
print*,num2
END
我需要将答案打印为30.但是我得到的值是49和50而不是得到10和30.请帮帮我。
答案 0 :(得分:1)
这是一个非常简单的版本:它将参数作为字符串读取,将它们一个接一个地转换为int,然后将它们全部添加。
PROGRAM Argtest
IMPLICIT NONE
integer*4 nargs,i
character arg*80
integer :: total, int_arg
nargs = iargc()
total = 0
do i = 1,nargs
call getarg(i, arg)
read(arg, *) int_arg
total = total + int_arg
end do
print *, "total is ", total
END
请注意,我从参数1开始,而不是0(因为这是您的程序名称,不能转换为数字)。
您现在已经更新了您的问题:ichar将单个字符转换为与该字符的ASCII代码对应的整数。
您需要使用read(ch_num, '(I)') int_num
将"10"
之类的字符串转换为整数10
。