fortran - 试图在子程序中写入字符串导致错误
问题描述
由于我的作业有一些限制,使用了 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”
另外,我还有一些其他问题:
是什么
*20
意思CHARACTER*20 STR
?这是字符串的大小吗?10
进去怎么样WRITE (*,10) STR
?这是要写入的字符串的长度吗?(*,*)
WRITE 是什么意思(*,*) a
解决方案
例如,您可以在此处阅读: https ://www.obliquity.com/computer/fortran/io.html
给 write 的第二个值是隐式格式关键字的参数,它是同一程序单元中语句的标签,包含完整格式规范的字符表达式或数组,或用于列表定向格式的星号 *。
因此,如果您直接提供数据,您可能希望在此处使用 *。否则,您的程序需要在带有格式化语句的某行处添加标签 10。
是的,CHARACTER*20 STR 表示变量 STR 的长度为 20,例如您可以在此处阅读:https ://www.obliquity.com/computer/fortran/datatype.html
推荐阅读
- javascript - 使用 ref 访问元素内的元素
- r - 如何使用ggplot2在直方图中添加汇总统计?
- angular - 如何在 Angular 8 应用程序中设置 expires_?
- c++ - 如何找出我的 C++ 编译器用于 std::hash 的特定算法?
- php - PHP 函数 exec() 停止加载站点
- android - 在服务类中使用 picasso 加载图像
- windows - 如何获取角色为列表的 IAccessible 中元素的文本
- c# - WebGL 版本中的 HTTP 500 内部服务器错误
- c# - WS-Security C# 到 PHP
- javascript - 连接多个对象内的值