[問題] 關於BACKPACE的寫法請教

看板Fortran作者 (努力變身中)時間10年前 (2014/09/05 00:04), 編輯推噓3(304)
留言7則, 2人參與, 最新討論串1/1
板上各位高手好, 小弟目前實作時會用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

09/05 09:16, , 1F
讀取一行後需要backspace兩次才能繼續讀取上一行,沒問題
09/05 09:16, 1F

09/05 09:19, , 2F
假設現在是在第i行,讀取完了會在第i+1行,要是只有一個
09/05 09:19, 2F

09/05 09:20, , 3F
backspace那就只是回到第i行而不是第i-1行
09/05 09:20, 3F

09/05 13:07, , 4F
請問terryys大,所以第8行指定的advance='no'在這邊沒有
09/05 13:07, 4F

09/05 13:08, , 5F
動作正確嗎? 這樣的狀態敘述應該是避免讀取位置自動換行才是
09/05 13:08, 5F

09/12 11:20, , 6F
經過測試,不論advance是yes還是no,backspace都會回到
09/12 11:20, 6F

09/12 11:21, , 7F
同一行
09/12 11:21, 7F
文章代碼(AID): #1K28sX1Y (Fortran)
文章代碼(AID): #1K28sX1Y (Fortran)