小弟最近在做一个文本文件转化为二进制文件的问题,希望可以将文件的大小实现压缩,然后需要的时候再转为文本文件读取,现在这个文件是这样的,就是前面的19行均为长度不一得字符串,后面是几行小数,具体小数的行数就是第19行字符串中的整数,如此循环,我编了一个程序,编译没什么问题,但是一运行就卡着半天不动了,不知道问题出在哪了,我的思路是想先把前面19行循环读取,然后再把第19行的字符串转化为整数,然后循环读取小数,但是这样的话出现很多空格,文件反而更大了,希望各位大佬能不吝赐教。[Fortran] 纯文本查看 复制代码 program jack01
implicit none
character(len = 66) buffer
integer :: num = 0
real(kind = 4) :: a, b
integer :: status = 0
integer countera,counterb
integer, parameter :: lines = 19
integer :: r = 1
logical alive
inquire(file = 'new.txt',exist = alive)
if(alive)then
!打开输入输出文件
open(unit = 12, file = 'new.txt')
open(unit = 13, file = 't.bin', access = 'direct', form = 'unformatted', recl = 20 )
do while(.true.)
!转存前面19行的内容
do countera = 1, lines, 1
read(14, fmt = "(A66)",iostat = status) buffer
if(status /= 0) exit
write(15, rec = r) buffer
r = r + 1
end do
countera = 1
!转存实数部分的内容
do counterb = 1, num, 1
read(14, *, iostat = status) a, b
if(status /= 0) exit
write(15, rec = r) a, b
r = r + 1
end do
counterb = 1
end do
else
write(*,*)'new.txt',"does not exist"
end if
!关闭输入输出文件
close(12)
close(13)
stop
end |