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

039.nonAdvancingOutput_非前进输出

2026年8月27日基础级

普通格式化输出完成后会结束当前记录,终端中通常表现为换行。writeadvance="no"说明符可以暂不结束记录,让后续输出继续写在同一行。

语法结构

write (unit, format, advance="no") output_list
  • advance="no"只适用于显式格式的外部格式化输入输出。
  • 连续的非前进write会继续使用当前输出记录。
  • 完成同一行输出后,应执行一次普通write来结束记录。

本文代码

! advance='no'让多次write继续写入同一条记录。
program nonAdvancingOutputDemo
  implicit none

  integer :: percent

  write (*,"(A)",advance="no") "进度:"
  do percent = 0, 100, 50
    write (*,"(1X,I0,A)",advance="no") percent, "%"
  end do
  write (*,*)
end program nonAdvancingOutputDemo

编译运行

(base) hong@hongdeMacBook-Pro 039.nonAdvancingOutput % gfortran -Wall -Wextra -std=f2018 exampleNonAdvancingOutput.f90
(base) hong@hongdeMacBook-Pro 039.nonAdvancingOutput % ./a.out
进度: 0% 50% 100%

现象分析

标题和三个百分比由四次非前进write产生,但它们共同出现在一行。循环结束后的空write (*,*)结束当前记录,使后续终端内容从下一行开始。

核心知识点

  • advance="no"控制是否结束输出记录,不会改变格式描述符本身。
  • 非前进输出适合提示符、进度信息和需要分步生成的单行内容。
  • print没有advance说明符,这是write控制列表提供的能力。

发表回复

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