2014-03-25 132 views
1

我发现难以阅读的文本文件,尽快在code.Please分配的各个变量的值帮帮我,谢谢读取输入的文本文件

Program Console2 
IMPLICIT NONE 
Real :: BB,CC,DD 
Integer n,AA 
Character (LEN=8) Line 
OPEN(UNIT=2,FILE="Chaq.txt",STATUS='unknown') 
Do n=1,10 
READ (2,('(a6,I12,F8.2,F8.2,F8.2)'))Line,AA,BB,CC,DD 
write (*,*) AA,BB,CC,DD 
End Do 
End program Console2 

输入文件

GRID  3954  -182.53196.65596-28.5831       
GRID  3955  -186.40268.61172-28.5831       
GRID  3957  -187.65493.24453-28.5831       
GRID  3958  -173.982108.158 -28.5831       
GRID  3959  -166.58396.77976-28.5831       
GRID  3960  -164.51897.80294-28.5831       
GRID  3961  -194.53573.86154-28.5831       
GRID  3962  -186.237101.5011-28.5831       
GRID  3963  -174.59296.25317-28.5831       
GRID  3965  -184.89788.38072-28.5831       
GRID  3966  -193.65277.39146-28.5831       
GRID  3967  -168.41599.97072-28.5831       
GRID  3968  -165.85866.80172-28.5831       
GRID  3970  -174.87381.45816-28.5831       
GRID  3971  -184.27268.54756-28.5831       
GRID  3972  -173.699100.7843-28.5831       
GRID  3973  -172.326102.0733-28.5831       
GRID  3974  -178.06985.87581-28.5831       
GRID  3975  -173.97666.80172-28.5831 
+0

你发布的内容表明数据文件包含诸如“-182.53196.65596-28.5831”之类的条目,这些条目不容易解析为数字。这是您发布的文件还是文件内数据的真实表示? –

+0

谢谢,正如我贴出的一样,我想与8个空格区分并分配。 – ABOSs

+0

那些不像我所有的f8.2。你能否显示第1行和第4行的预期结果? – agentp

回答

2

您只需要考虑输入文件中的空格。试试这个修改您的read声明:

READ (2,('(1x,a4,8x,I4,8x,f8.2,f8.2,f8.2)')) Line,AA,BB,CC,DD 

注意使用x控制编辑描述符,它告诉运行时多少字符位置忽略的。还要注意,我已经理解你的输入文件行以一个空格开始。

+0

它的工作非常感谢你。真的它帮助我很多。 – ABOSs

+0

然后你应该接受答案。 –

+0

为什么它不工作:'READ(2,('(1x,a4,8x,I5,8x,f8.2,f8.2,f8.2)'))Line,AA,BB,CC,DD' – ABOSs