我在论坛上搜索过但无法找到问题的答案。如果我错过了什么,我很抱歉。所以,这是我的问题:
我的代码如下:
program averagepro
implicit none
real,allocatable,dimension(:) :: a
real :: realfunctionaverage
integer :: i,n
character :: response,filename
print*,'How many numbers would you like to enter?'
read*,n
allocate(a(n))
print*,'Would you like to enter numbers by reading from a file or from the keyboard?'
print*,'Press "F" to enter using a file or "K" to enter from keyboard.'
read*,response
if (response=='F' .or. response=='f') then
print*,'Please enter the name correctly, as well as regarding capital letters and file extension: '
read*,filename
! print*, filename
! open(12,file='array.txt')
open(12,file='filename')
do i=1,n
read(12,*) a(i)
enddo
elseif (response=='K'.or. response=='k') then
print*,'Please enter the numbers, one at each time: '
do i=1,n
read*,a(i)
enddo
else
stop
endif
write(*,10) ' The average of the numbers entered are: ',realfunctionaverage(n,a)
10 format(a,2f10.3)
deallocate(a)
end program averagepro
!--------------------------------------------------------------------------------------------------------
function realfunctionaverage(m,list)
implicit none
integer :: m,i
real,dimension(m) :: list
real :: realfunctionaverage,ans
ans=0
do i=1,m
ans=ans+list(i)
enddo
realfunctionaverage=ans/m
end function realfunctionaverage
我尝试从键盘输入文件名时遇到问题。当程序询问文件名时,我将其定义为" array.txt"或"数组&#34 ;;但它会出错并停止运行。我该怎么办?顺便说一句,当我禁用某些行并直接写入" array.txt"的文件名时,程序正常工作。
答案 0 :(得分:2)
您正在尝试打开名为" filename"的文件。无论用户输入什么。这一行:
open(12,file='filename')
应该是:
open(12,file=filename)
使用引号,它是字符串文字" filename",没有引号,它是名为filename
的变量的内容。
您还需要声明变量filename
一定长度以容纳文件名。
character(len=256) :: filename
应该适用于大多数用例。如果没有len
,则字符变量只能包含一个字符。