[問題] 讀取資料設定

看板Fortran作者 (阿瑞)時間12年前 (2012/03/29 08:28), 編輯推噓0(004)
留言4則, 1人參與, 最新討論串1/1
想請教一個應該不會太難的問題 我的主要程式碼如下(擷取部份) CHARACTER(LEN=80):: LLEN CHARACTER(LEN=4):: NUM(100) INTEGER :: SPAN READ(12,*)SPAN DO K=1,SPAN READ(12,ADVANCE="NO")NUM(K) END DO ELSE IF(LLEN(11:24)=="B"//" "//NUM(S)//" 1".OR.& LLEN(11:24)=="B"//" "//NUM(S)//" 1".OR.& LLEN(11:24)=="B"//" "//NUM(S)//" 1")THEN READ(11,*)MLD,M1D,M2D,M3D,MRD,VLD,V1D,V3D,VRD ELSE IF(LLEN(11:24)=="B"//" "//NUM(S)//" 2".OR.& LLEN(11:24)=="B"//" "//NUM(S)//" 2".OR.& LLEN(11:24)=="B"//" "//NUM(S)//" 2") THEN READ(11,*)MLL,M1L,M2L,M3L,MRL,VLL,V1L,V3L,VRL 要讀取的檔案在11位置,格式如下 RF B 31 1 3.00 -.79 .37 .97 .76 .00 -1.73 -1.25 .73 1.21 .00 RF B 31 2 3.00 -.34 .21 .50 .38 .00 -.79 -.62 .39 .56 .00 而在12位置裡格式現在如下 2 19 31 在要讀取的檔11位置下 RF B XX 之後的數字是我在12位置INPUT的編號,編號可能會從1到999,所以會有IF條件裡不同的 空格 問題就是出在我所鍵入的INPUT 19 31 這裡 31會亂跑 我去WRITE以下這些 WRITE(*,*)"B"//" "//NUM(S)//" 1" WRITE(*,*)"B"//" "//NUM(S)//" 1" WRITE(*,*)"B"//" "//NUM(S)//" 1" 尾巴的1還會跳到第二行 使得跟我要的B XX 1 這個格式對不起來而抓不到東西 另外想請教READ(字串,*)數字 這招的使用時機? 是在任何地方都能用嗎 我是還沒用這招轉換成功過= = 以上麻煩請版上高手們給個解答 附上未完成程式碼 http://ppt.cc/0bcB -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.166.105.125 ※ 編輯: btoker 來自: 218.166.105.125 (03/29 12:52) ※ 編輯: btoker 來自: 218.166.106.152 (03/30 10:04) ※ 編輯: btoker 來自: 218.166.106.152 (03/30 10:40)

03/30 10:57, , 1F
write採用格式化輸出 另外B跟空格可以合在一起
03/30 10:57, 1F
我WRITE只是看一下格式對不對 不過話說B跟空格真的可以合= = 我想不到方法解決 只好把19跟31分成兩行來讀= = 現在比較大的問題是我附上未完成的程式碼 迴圈無法讀到第2個編號 也就是說 迴圈跑S=2時 會讀不到NUM(2)的資料 看半天也看不出問題 再麻煩各位指教 ※ 編輯: btoker 來自: 218.166.106.152 (03/30 11:30)

03/30 11:45, , 2F
所以簡言之你是要找RF B ## 這個樣式吧?
03/30 11:45, 2F

03/30 11:47, , 3F
直接用read(*,*) char,char,int然後用if判斷之後該怎麼
03/30 11:47, 3F

03/30 11:48, , 4F
讀就好了
03/30 11:48, 4F
文章代碼(AID): #1FSwp627 (Fortran)
文章代碼(AID): #1FSwp627 (Fortran)