相关疑难解决方法(0)

将整数转换为字符串以在运行时创建输出文件名

我在Fortran中有一个程序将结果保存到文件中.目前我使用打开文件

OPEN (1, FILE = 'Output.TXT')
Run Code Online (Sandbox Code Playgroud)

不过,我现在想运行一个循环,每次迭代的结果保存到文件'Output1.TXT','Output2.TXT','Output3.TXT',等等.

在Fortran中有一种简单的方法可以从循环计数器构造文件名i吗?

string fortran integer

45
推荐指数
4
解决办法
12万
查看次数

Fortran读取混合字符串和数字数据

我在阅读声明方面遇到了麻烦.我更喜欢Fortran90,但如果它有帮助,其他版本可能是可能的.我在文件中有一堆数据,可以描述为:

  • 空格分隔
  • 不是固定的格式
  • 包含一个后跟7个数字的字符串
  • string包含正斜杠/

这是一个例子:

maxele/OS1_HC_LF_A_0001_004_maxele.63    4.22E-03        9.00E-01        1.00E-06        1       -999    -999    -999
maxele/OS1_Inl_A_0001_005_maxele.63     2.11E-03        9.00E-01        1.00E-06        3       -999    -999    -999
maxele/OS1_HC_LF_C_0001_009_maxele.63  1.56E-03        9.00E-01        1.00E-06        2       58.77   -82.82  28.91
maxele/OS1_TS_B_0001_006_maxele.63   3.90E-03        9.00E-01        1.00E-06        1       -999    -999    -999  
Run Code Online (Sandbox Code Playgroud)

我已经了解到如果遇到无格式读取的斜杠(/)字符,Fortran将停止读取语句,因此我必须使用格式说明符.并且由于字符串长度未知,我不确定如何确保字符串读取在第一个空格处停止.我相信它可以在整行中阅读,然后再进行解析,但这看起来很复杂.有没有办法强迫它将数据视为空格分隔?提前致谢.

fortran

3
推荐指数
1
解决办法
2514
查看次数

错误:逻辑运算符“.eq.”的操作数 (1) 处为 INTEGER(4)/HOLLERITH

我是 Fortran 新手。所以我需要帮助。我在 SUSE 上使用 gfortran 编译我的代码并收到以下错误:

200 IF ( ID .EQ. 4HEOT ) GO TO 20
               1

Error: Operands of logical operator '.eq.' at (1) are INTEGER(4)/HOLLERITH
Run Code Online (Sandbox Code Playgroud)

代码的主文件附加在下面的链接中,其中 1818 行显示了错误。

我的文件的链接是:https://files.engineering.com/getfile.aspx? folder=cd6961f3-d38b-4e61-a43d-269fa18c7d11&file=sfeng.f

如何解决这个问题?

对于简化/最小的示例,我在此处添加了代码:

      SUBROUTINE CDRD ( II )

      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
c     ohad 15/7/08
c      IMPLICIT INTEGER*8 (I-N)
      IMPLICIT INTEGER*4 (I-N)

C*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=C
C     THIS SUBROUTINE READS PROPULSION SYSTEM DRAG DATA.               C
C                                                                      C
C     USE NON-ZERO "II" TO WRITE TABLE DATA.                           C
C*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=C

      CHARACTER*80    TITLE, CDFILE …
Run Code Online (Sandbox Code Playgroud)

fortran gfortran fortran77

3
推荐指数
1
解决办法
3642
查看次数

Fortran:整数到字符串示例

我正在尝试编写一个简单的Fortran代码,用于练习.它应该在一个范围内乘以数字.每次,生成的产品都会转换为字符串,因为我想查看它是否包含相同的数字.

我测试了将整数转换为字符串并键入字符串组件的方式,一切正常.然后,我需要比较字符串的组件,我使用string(number:number).但我无法让代码正确地执行此操作.

这是代码和输出:

program test
implicit none
character(10) myString
character(1) a,b,c,d,e,f
integer::i,j,k
do i=900,901,1
        j=900
        k=i*j
        write(*,*)'k =', k
        write(myString,'(i10)') k
        write(*,*)'myString = ', myString
        a=myString(1:1)
        b=myString(2:2)
        c=myString(3:3)
        d=myString(4:4)
        e=myString(5:5)
        f=myString(6:6)
        print*,a,b,c,d,e,f
        if (d==f) then
            print*,'hobla'
        else
            print*,'fobla'
        end if
end do

stop
end program test
Run Code Online (Sandbox Code Playgroud)

所以我定义了字符:a,b,c,d,e,f来包含字符串的组成部分.并使用myString(i:i)定位每个组件并将其存储在字符a,b,c,d,e,f之一中.但似乎只有前两个工作正常,其余的都没有存储!

输出:

 k =      810000
 myString =     810000
     81
 fobla
 k =      810900
 myString =     810900
     81
 fobla
Run Code Online (Sandbox Code Playgroud)

注意事项81.这应该是第一次给810000,并打印"hobla".并第二次给810900并打印"fobla".但这没有发生!

任何人都可以告诉我如何让myString接受零作为字符?

fortran

2
推荐指数
1
解决办法
8723
查看次数

标签 统计

fortran ×4

fortran77 ×1

gfortran ×1

integer ×1

string ×1