gpt4 book ai didi

Fortran 格式的 IO 和 Null 字符

转载 作者:行者123 更新时间:2023-12-04 14:23:20 25 4
gpt4 key购买 nike

我想知道在 NULL 字符 ACHAR(0) 的情况下 Fortran 的 I/O 会如何表现。

实际任务是用恰好八个字符的 block 填充 ASCII 文件。这些字符串是从二进制文件中读取的,可能包含非打印字符。

我尝试使用 gfortran 4.8、8.1 和 f2c。如果字符串中有 NULL 字符,则格式说明符 FORMAT(A8) 不会写入八个字符。

试试下面的 F77 代码:

c Print a string of eight character surrounded by dashes
100 FORMAT('-',A8,'-')
c Works fine if empty or any other combination of printing chars
write(*,100) ''
c In case of a short sting blanks are padded
write(*,100) '345678'
c A NULL character does something I did not expect
write(*,100) '123'//ACHAR(0)//'4567'
c Not even position editing helps
101 FORMAT('-',A8,T10,'x')
write(*,101) '123'//ACHAR(0)//'4567'
end

我的输出是:

-        -
- 345678-
-1234567-
-1234567x

这是预期的行为吗?知道如何在任何情况下获得八个字符宽的输出吗?

最佳答案

当使用编辑描述符A8 时,字段宽度为八。对于输出,将写入八个字符。

在这个例子中,不是字符的写法与您的预期相反,而是它们在您的终端上的显示方式。

您可以使用 hexdump 等工具进一步检查输出,或者您可以写入内部文件并查看任意子字符串。

关于Fortran 格式的 IO 和 Null 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51062755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com