Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用fortran语言读取输入文件_Fortran_Fortran90 - Fatal编程技术网

用fortran语言读取输入文件

用fortran语言读取输入文件,fortran,fortran90,Fortran,Fortran90,我正在寻找一个文件,如: NE 32 0 IBZINT 2 NKTAB 936 XC-POT VWN ITER 29 MIX 2.00000000000000E-01 TOL 1.00000000000000E-05 我在想我要找的是索引内在的,并据此编写了一个代码: 编辑代码已更新 Implicit None integer ::i,

我正在寻找一个文件,如:

NE                32         0
IBZINT             2
NKTAB            936
XC-POT    VWN       
ITER          29
MIX     2.00000000000000E-01
TOL     1.00000000000000E-05
我在想我要找的是
索引
内在的
,并据此编写了一个代码:

编辑代码已更新

   Implicit None
    integer ::i,pos
    character(50) :: name
    character(len=16),dimension(100)::key,val
    key(1)="NE"
    open(12,file="FeRh/FeRh.pot_new",status="old")
    do i=1,100
      read(12,*)name
      if (name(1:2)==key(1))then
        write(*,*)"find NE"
        write(*,*)name(1:2)
        write(*,*)name(index("NE","")+21)
      endif
    end do
    close(12)
    !write(*,*)index(key(1),"")
    End Program  readpot
我希望在第三个
语句中有32个。

一定是哪里出了大问题。您能帮忙吗?

当您想从文件中读取一行时,请使用列表导向(
*
作为格式)输入。这不是您想要的,因为运行时会有一些有限的解析

也就是说,第一条记录上的
read(12,*)name
将导致
“NE”
在变量
name
中填充大量空格,因为该记录将在空格上拆分

由于您希望在
name
中输入整行,请使用
read
中的格式
'(A)


一旦你有了那一行,你就可以做进一步的解析了。然而,从您显示的
索引
似乎没有帮助,尤其是在检查空子字符串时。您知道键的长度(使用
len_trim
),因此,如果您有匹配项,您就知道第一个分隔符的位置。

如果我想读取一行,例如

NE                32         0
我会写一份声明,比如

read(12,*) name, int1, int2
并且期望我的处理器将
name
设置为
NE
int1
设置为
32
int2
设置为
0
,如果我已经声明
int1
int2
为整数


我感到困惑的是,您似乎想要阅读一行文本,然后对其进行解析,而忽略了列表定向输入的好处。如果您确实想将其解析为字符变量和两个整数以外的内容,请告诉我们。

出现“严重错误”的症状是什么?但是,缺少
读取
可能没有帮助。在第三次写入中,您似乎缺少了一个
。这是否意味着是
名称(索引(“NE”,即“”):21)
?我想读取所有值,NE 32 0只是一个最小的示例,稍后我需要在主程序中使用它。我如何解析它?如果你想读一行,其中包含一个短字符串,后跟两个整数,都用空格分隔,请遵循我的建议。如果您需要以其他方式解析该行,请解释如何解析。我认为问题是,他需要根据关键字的不同格式的顶级读取行。将整行作为字符串读取,然后有条件地(列表)读取字符串是一个好方法。