作者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://www.ptt.cc/bbs/Fortran/M.1409846689.A.062.html
推 terryys: 讀取一行後需要backspace兩次才能繼續讀取上一行,沒問題 09/05 09:16
推 terryys: 假設現在是在第i行,讀取完了會在第i+1行,要是只有一個 09/05 09:19
→ terryys: backspace那就只是回到第i行而不是第i-1行 09/05 09:20
→ STi: 請問terryys大,所以第8行指定的advance='no'在這邊沒有 09/05 13:07
→ STi: 動作正確嗎? 這樣的狀態敘述應該是避免讀取位置自動換行才是 09/05 13:08
推 terryys: 經過測試,不論advance是yes還是no,backspace都會回到 09/12 11:20
→ terryys: 同一行 09/12 11:21