作者STi (努力变身中)
看板Fortran
标题[问题] 关於BACKPACE的写法请教
时间Fri Sep 5 00:04:46 2014
板上各位高手好,
小弟目前实作时会用BACKSPACE这个功能,
但是在写作上有些逻辑上的问题;
部分程式码如下:
1 open(unit=13,file='tmp1.log',form='formatted',status='old',&
2 & access='sequential',position='append')
3
4 backspace(13)
5
6 do while(.true.)
7
8 read(13,'(a132)',iostat=error,advance='no')line
9
10 if(error/=0)then
11 write(*,*)'read input done!'
12 exit
13 end if
14
15 write(*,*)line
19
20 do loop2=1,2,1
21 backspace(13)
22 end do
23
24 end do
问题点在程式码20~22行处,
我的想法是既然我已经把backspace写在do while当中了,
每读取一次应该就会把读取位置倒回一行,
但是实际上却是需要用到do...end do来包装backspace,
否则程式只会不断得给我读取档案中的最後一行。
请问是否我在写作上的逻辑有问题?
先感谢大家的讨论与建议,谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.115.179.44
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Fortran/M.1409846689.A.062.html
1F:推 terryys: 读取一行後需要backspace两次才能继续读取上一行,没问题 09/05 09:16
2F:推 terryys: 假设现在是在第i行,读取完了会在第i+1行,要是只有一个 09/05 09:19
3F:→ terryys: backspace那就只是回到第i行而不是第i-1行 09/05 09:20
4F:→ STi: 请问terryys大,所以第8行指定的advance='no'在这边没有 09/05 13:07
5F:→ STi: 动作正确吗? 这样的状态叙述应该是避免读取位置自动换行才是 09/05 13:08
6F:推 terryys: 经过测试,不论advance是yes还是no,backspace都会回到 09/12 11:20
7F:→ terryys: 同一行 09/12 11:21