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
Input Fortran,如何让Fortran忽略具有随机间距的数据文件中的行_Input_Fortran_Skip - Fatal编程技术网

Input Fortran,如何让Fortran忽略具有随机间距的数据文件中的行

Input Fortran,如何让Fortran忽略具有随机间距的数据文件中的行,input,fortran,skip,Input,Fortran,Skip,我正在编写一个FORTRAN代码,它使用MD程序生成的文件中的数据。数据是一个值列表,但在数据中有中断,用于列表更新的形式(#邻居列表更新..列表中有6527个索引),这些中断是随机间隔的,所以我不能只跳过每个x 当我编写代码时,它不会忽略这些行并随机添加上一步的值 1,0.9851069999995,0.98510699999995 2,1.9654170000000000,0.98031000000000001 3,2.9427820000000002,0.9773650000000004

我正在编写一个FORTRAN代码,它使用MD程序生成的文件中的数据。数据是一个值列表,但在数据中有中断,用于列表更新的形式(#邻居列表更新..列表中有6527个索引),这些中断是随机间隔的,所以我不能只跳过每个x

当我编写代码时,它不会忽略这些行并随机添加上一步的值

1,0.9851069999995,0.98510699999995
2,1.9654170000000000,0.98031000000000001
3,2.9427820000000002,0.9773650000000004
4,3.9186540000000001,0.975871999996
4,4.8945259999999,0.975871999999996
5,5.8697910000000002,0.9752650000000005
注意,双步骤4的值与真实步骤4的值相同

我该怎么跳过这一行呢。请在下面找到示例代码

Open(Unit=10,File='prod._100.tup')

do i=1,50

Read(10,*,IOSTAT=ios)step,temp,kinetic,potential,total,pressure
If(IS_IOSTAT_END(ios)) Exit
test=test+temp
print*, step, test, temp
End Do
尝试:

i=1

do while(i我不清楚文件中的“中断”是什么。它们是空行吗?如果是,以下代码应该可以工作:

use, intrinsic :: iso_fortran_env

character (len=200) :: line

Open(Unit=10,File='prod._100.tup')

read_loop: do

   Read (10,'(A)',IOSTAT=ios) line
   If(ios == iostat_end) exit read_loop
   if (len_trim (line) == 0) then
      write (*, *) "blank line"
      cycle read_loop
   end if
   read (line, *) step,temp,kinetic,potential,total,pressure
   test=test+temp
   print*, step, test, temp

end do: read_loop

write (*, *) "total is", test
以上未测试。“len_trim”测试基于空白行的不良记录。如果另外定义了中断,则必须创建不同的测试

use, intrinsic :: iso_fortran_env

character (len=200) :: line

Open(Unit=10,File='prod._100.tup')

read_loop: do

   Read (10,'(A)',IOSTAT=ios) line
   If(ios == iostat_end) exit read_loop
   if (len_trim (line) == 0) then
      write (*, *) "blank line"
      cycle read_loop
   end if
   read (line, *) step,temp,kinetic,potential,total,pressure
   test=test+temp
   print*, step, test, temp

end do: read_loop

write (*, *) "total is", test