看板 Fortran 關於我們 聯絡資訊
板上各位高手好, 小弟目前實作時會用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