回 帖 发 新 帖 刷新版面

主题:关于使用read命令读取文件后跳出的问题

小可不才,使用的是CVF6.6编译器,在变成的过程中遇到些问题,苦苦思索不得其道,先向广大编程前辈求教,程序如下:
  open(11,file='d:\data\beiking\'//wjm)
    n=0                                                 
    do while (.true.)                      
    read(11,'(a)',end=100)neir              
    n=n+1                                     
    end do                         
100 continue                                        
    rewind(11)
下面的部分是使用do循环来控制读写11号文件,没有问题,不做讨论。主要的问题在于上面这段代码中第四行read(11,'(a)',end=100)中的end=100,本人在编写其他程序的时候发现有的程序需要使用它来跳出读取,有的程序又不需要,那么请教各位高手,在什么样的情况下需要使用end=100,100 continue这样的行代码来跳出?为什么?[em12]

回复列表 (共5个回复)

沙发

一般来说,都是需要的。我不知道你不需要的代码是怎么样的?

一个文件不可能无穷行吧?你的程序不能无穷死循环吧?

板凳

请教一下石头哥,这种代码的写法具体在什么情况下才会使用?因为平时使用do循环的时候都有确切的行数可以依赖,而行数确定时用do循环控制读写是很少用到这个写法的,比如说:
open(11,file=aa)
do i=1,9
read(11,'(a)')neirong
write(*,*)neirong
enddo
这就能读出aa文件里的头九行数据,而我碰到的问题是多层的循环嵌套,最外层的循环的行数是固定的,但是不用这个写法的话就会出现end-of-file during read的错误,也就是无限读取吧,加上了这一句就好了。

3 楼

貌似你都自问自答了,叫我说什么?

4 楼

恩。。这个。。我就是不大确定具体的使用情况,有些时候需要用到,有些时候又用不着。。写程序的时候碰到这种问题很窝火的

5 楼

如果你是 Do while (.True.) 那么必须控制循环,否则就是死循环。

需要就用,不需要就不用。为啥要窝火呢?

我来回复

您尚未登录,请登录后再回复。点此登录或注册