Интересно, как будет вести себя ввод / вывод Фортрана в случае символа NULL ACHAR(0)
.
Фактическая задача - заполнить файл 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
Это ожидаемое поведение? Любая идея, как получить вывод шириной восемь символов в любом случае?