小编kyl*_*yle的帖子

为什么print语句会改变gzread的行为?

我正在尝试使用zlib库中的C函数gzopen,gzread和gzclose在Fortran中读取gzip文件.我的子例程在包含print语句时正常工作,但在Z_STREAM_ERROR (-2)没有它的情况下给出了它.是什么导致这种情况发生,我该如何解决?

module gzmodule
    use :: iso_c_binding
    implicit none
    private
    public fastunzip

    interface
        type(c_ptr) function gzopen(filename,mode) bind(c)
            use :: iso_c_binding
            character(kind=c_char), dimension(*) :: filename
            character(kind=c_char), dimension(*) :: mode
        end function gzopen
    end interface

    interface
        integer(c_int) function gzread(gzfile,buffer,length) bind(c)
            use :: iso_c_binding
            type(c_ptr), value :: gzfile
            character(len=1,kind=c_char) :: buffer(*)
            integer(c_int) :: length
        end function gzread
    end interface

    interface
        integer(c_int) function gzclose(gzfile) bind(c)
            use :: iso_c_binding
            type(c_ptr), value :: gzfile
        end function
    end interface

    contains

        subroutine fastunzip(filename, isize,abuf,ierr) …
Run Code Online (Sandbox Code Playgroud)

c fortran gzip gfortran fortran-iso-c-binding

5
推荐指数
1
解决办法
261
查看次数

标签 统计

c ×1

fortran ×1

fortran-iso-c-binding ×1

gfortran ×1

gzip ×1