首页 > 解决方案 > 试图在子程序中写入字符串导致错误

问题描述

由于我的作业有一些限制,使用了 F77。我正在学习使用子程序,但在尝试写出字符串时遇到错误。

  PROGRAM test
  IMPLICIT NONE
  INTEGER a
  CHARACTER*20 STR,str1
  STR = 'Hello world'
  a = 1     
  WRITE (*,*) a  
  WRITE (*,10) STR    
  CALL TEST(str1)
  STOP
  END

  SUBROUTINE test(str2)
  CHARACTER*20 str2
  str2 = 'testing'
  WRITE (*,10) STR2
  RETURN
  END

尝试编译此代码时,它返回“错误:缺少语句编号 10”

另外,我还有一些其他问题:

  1. 是什么*20意思CHARACTER*20 STR?这是字符串的大小吗?

  2. 10进去怎么样WRITE (*,10) STR?这是要写入的字符串的长度吗?

  3. (*,*)WRITE 是什么意思(*,*) a

标签: fortranfortran77

解决方案


例如,您可以在此处阅读: https ://www.obliquity.com/computer/fortran/io.html

给 write 的第二个值是隐式格式关键字的参数,它是同一程序单元中语句的标签,包含完整格式规范的字符表达式或数组,或用于列表定向格式的星号 *。

因此,如果您直接提供数据,您可能希望在此处使用 *。否则,您的程序需要在带有格式化语句的某行处添加标签 10。

是的,CHARACTER*20 STR 表示变量 STR 的长度为 20,例如您可以在此处阅读:https ://www.obliquity.com/computer/fortran/datatype.html


推荐阅读