作者btoker (阿瑞)
看板Fortran
标题[问题] 读取资料设定
时间Thu Mar 29 08:28:50 2012
想请教一个应该不会太难的问题
我的主要程式码如下(撷取部份)
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)
1F:→ Cypresslin:write采用格式化输出 另外B跟空格可以合在一起 03/30 10:57
我WRITE只是看一下格式对不对 不过话说B跟空格真的可以合= =
我想不到方法解决 只好把19跟31分成两行来读= =
现在比较大的问题是我附上未完成的程式码
回圈无法读到第2个编号 也就是说 回圈跑S=2时
会读不到NUM(2)的资料 看半天也看不出问题
再麻烦各位指教
※ 编辑: btoker 来自: 218.166.106.152 (03/30 11:30)
2F:→ Cypresslin:所以简言之你是要找RF B ## 这个样式吧? 03/30 11:45
3F:→ Cypresslin:直接用read(*,*) char,char,int然後用if判断之後该怎麽 03/30 11:47
4F:→ Cypresslin:读就好了 03/30 11:48