You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fortran使用(23A,1X,F4.1)格式WRITE输出乱码问题求解

问题原因
  • 核心错误是格式化描述符写法混淆,Fortran中字符型格式符有两种合法写法:
    1. nA:表示后续连续匹配n个字符型输出项,每个项按默认宽度输出
    2. Aw:表示匹配1个字符型输出项,固定输出宽度为w个字符
  • 你的代码里写了23A,系统会认为需要匹配23个连续的字符型输出项,但你实际第一个输出项只有1个字符串,后续缺少22个字符变量,系统就会把后面的REAL型温度值的二进制内存内容强行按字符解析,这就是乱码的来源;后续的F4.1也没有匹配到对应的REAL变量,自然无法正确输出数值。
解决方法

修改格式化WRITE语句的格式串即可,有两种常用改法:

  1. 如果你不需要固定字符串的输出宽度,直接去掉字符描述符的数字即可:
write(*, '(A, 1X, F4.1, 2X, A)') "You entered (formated):", temp_input, temp_input_units
  1. 如果你需要固定字符串输出宽度为23个字符,把23A改成A23即可:
write(*, '(A23, 1X, F4.1, 2X, A)') "You entered (formated):", temp_input, temp_input_units

修改后重新编译运行就能得到符合预期的输出,输入95 F的情况下格式化输出会显示为You entered (formated): 95.0 F,如果需要显示为一位小数的其他数值,对应调整输入或者浮点格式的精度即可。

内容的提问来源于stack exchange,提问作者Joseph Hallstrom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:48:03