fortran fortran中文资料网
手气不错
Article

032.printAndWrite_print与write

2026年7月30日基础级

printwrite都支持列表导向格式和显式格式。二者真正的区别在输出目标:print固定写入默认输出设备,write可以指定输出单元,也可以把格式化结果写入字符变量。

语法结构

print format, output_list
write (unit, format) output_list
write (character_variable, format) output_list
  • print没有输出单元参数,输出目标始终是默认输出设备。
  • write括号中的第一项是输出目标。写成*时使用默认输出设备,写成字符变量时执行内部文件输出。
  • 格式既可以是*,也可以是"(A,I0)"一类显式格式。这项能力由两条语句共享。

本文代码

! print固定写入默认输出设备,write还可以写入字符变量。
program printAndWriteDemo
  implicit none

  integer :: sampleCount
  character(len=80) :: message

  sampleCount = 42
  message = "尚未写入"

  print "(A,I0)", "print写入默认输出:", sampleCount
  write (*,"(A,I0)") "write写入默认输出:", sampleCount

  print "(A,A)", "内部write前:", trim(message)
  write (message,"(A,I0)") "write写入字符变量:", sampleCount
  print "(A,A)", "内部write后:", trim(message)
end program printAndWriteDemo

编译运行

(base) hong@hongdeMacBook-Pro 032.printAndWrite % gfortran -Wall -Wextra -std=f2018 examplePrintAndWrite.f90
(base) hong@hongdeMacBook-Pro 032.printAndWrite % ./a.out
print写入默认输出:42
write写入默认输出:42
内部write前:尚未写入
内部write后:write写入字符变量:42

现象分析

前两行分别由printwrite (*)产生。两条语句使用相同的(A,I0)格式并得到相同形式的终端输出,说明显式格式不是write独有的能力。

执行write (message,…)之前,字符变量保存“尚未写入”。这条内部write本身不会向终端增加一行,而是把格式化结果保存到message中,因此随后读取该变量时得到“write写入字符变量:42”。

核心知识点

  • print固定写入默认输出设备;write可以选择输出目标。
  • 列表导向格式和显式格式都能用于printwrite
  • 以字符变量作为write目标称为内部文件输出,可将数值按指定格式转换并组合成字符串。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注