请问Fortran有没有办法把一个文件夹的名字给改了

 我来答
bpkdww
2011-01-17 · TA获得超过1800个赞
知道小有建树答主
回答量:1140
采纳率:100%
帮助的人:288万
展开全部
语言自身没有列举文件夹的函数功能。

但不少编译器提供了这样的扩展,比如 Compaq 和 Intel Visual Fortran 提供的 GetFileInfoQQ 函数。

Subroutine DoWithWildcard(cWildcard,CallBack,iTotal)
Use DFLib,only:GetFileInfoQQ,GetLastErrorQQ,FILE$INFO,FILE$LAST,FILE$ERROR,FILE$FIRST,ERR$NOMEM,ERR$NOENT,FILE$DIR
Implicit None
Interface
Subroutine CallBack( FileName , loop )
Character(*),Intent(In) :: FileName
Integer,Intent(In) :: loop
End Subroutine CallBack
End Interface
Character*(*),Intent(In)::cWildcard
Integer,Intent(Out)::iTotal
TYPE (FILE$INFO) info
INTEGER(4)::Wildhandle,length,retInt
Wildhandle = FILE$FIRST
iTotal = 0
DO WHILE (.TRUE.)
length = GetFileInfoQQ(cWildCard,info,Wildhandle)
IF ((Wildhandle .EQ. FILE$LAST) .OR.(Wildhandle .EQ. FILE$ERROR)) THEN
SELECT CASE (GetLastErrorQQ())
CASE (ERR$NOMEM) !//内存不足
iTotal = - 1
Return
CASE (ERR$NOENT) !//碰到通配符序列尾
Return
CASE DEFAULT
iTotal = 0
Return
END SELECT
END IF
If ((info%permit.AND.FILE$DIR).Eq.0) then
Call CallBack( Trim(info.Name) , iTotal + 1 )
iTotal = iTotal + 1
End If
END DO
End Subroutine DoWithWildcard

!给你一个示范程序:
Program Main
Implicit None
External WriteName
Integer :: n
Call DoWithWildcard( '*.*' , WriteName , n )
If ( N >= 0 ) then
Write(*,*) '共' , N , '个文件!'
End If
End Program Main

!//这个程序需要自己编写,参数为两个,第一个参数为文件名,第二个参数为循环量。
Subroutine WriteName( FileName , loop )
Character(*),Intent(In) :: FileName
Integer,Intent(In) :: loop
Write(*,*) loop , FileName
End Subroutine WriteName
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式