在CentOS下使用Fortran进行文件操作,你可以使用Fortran的内置I/O功能或者调用C语言的文件操作函数。以下是一些基本的文件操作示例:
Fortran提供了丰富的内置I/O语句,如OPEN, READ, WRITE, CLOSE等,用于文件的读写操作。
program file_io_example
implicit none
integer :: iounit, iostat
character(len=100) :: filename
filename = 'example.txt'
iounit = 10 ! 选择一个未被使用的逻辑单元号
open(unit=iounit, file=filename, status='new', action='write', iostat=iostat)
if (iostat /= 0) then
print *, 'Error opening file:', iostat
stop
end if
! 写入数据
write(iounit, *) 'Hello, CentOS!'
! 关闭文件
close(iounit)
end program file_io_example
program file_read_example
implicit none
integer :: iounit, iostat, num_lines
character(len=100) :: filename
character(len=100), allocatable :: lines(:)
filename = 'example.txt'
iounit = 10 ! 使用与上面相同的逻辑单元号
open(unit=iounit, file=filename, status='old', action='read', iostat=iostat)
if (iostat /= 0) then
print *, 'Error opening file:', iostat
stop
end if
! 读取文件中的行数
rewind(iounit)
num_lines = 0
do
read(iounit, '(A)', iostat=iostat) lines(num_lines + 1)
if (iostat /= 0) exit
num_lines = num_lines + 1
end do
! 打印读取的行
do i = 1, num_lines
print *, lines(i)
end do
! 关闭文件
close(iounit)
end program file_read_example
Fortran可以通过iso_c_binding模块调用C语言的文件操作函数。以下是一个使用C语言fopen, fread, fwrite, fclose函数的示例:
program c_file_io_example
use iso_c_binding, only: c_int, c_f_pointer, c_null_char, c_open, c_read, c_write, c_close
implicit none
integer(c_int) :: file_unit, iostat
character(len=100) :: filename
integer, dimension(100) :: buffer
integer(c_size_t) :: bytes_read, bytes_written
filename = 'example.txt'
file_unit = 10 ! 选择一个未被使用的逻辑单元号
! 打开文件(C语言风格)
file_unit = c_open(c_loc(filename), c_open_read, c_null_char)
if (file_unit < 0) then
print *, 'Error opening file'
stop
end if
! 写入数据(C语言风格)
bytes_written = c_write(file_unit, c_loc(buffer), sizeof(buffer))
if (bytes_written /= sizeof(buffer)) then
print *, 'Error writing to file'
call c_close(file_unit)
stop
end if
! 关闭文件(C语言风格)
call c_close(file_unit)
end program c_file_io_example
请注意,上述C语言风格的文件操作示例可能需要根据实际情况进行调整,因为Fortran和C在数据类型和内存管理方面有所不同。
在实际应用中,你可能需要根据具体需求选择合适的方法,并处理可能出现的错误情况。