回 帖 发 新 帖 刷新版面

主题:如何用Fortran读出该Fortran程序所在目录下的所有目录名称?

如何用Fortran读出该Fortran程序所在目录下的所有目录名称?

回复列表 (共13个回复)

沙发

這得用系統API,并且這東東本來就不是FORTRAN所擅長的,寫了這些代碼就無法跨平臺了。
不太理解你們為什么喜歡用FORTRAN做這些與數值無關的事兒呢?

板凳

那就说API怎么调用也行,我要是知道了还需要问吗

3 楼

系統API與具體語言關系并不是很大,大體的過程就是:
取得一個查找器句柄;
通過句柄給查找器一個通配符;
循環到查找函數返回空值為止:
  查詢查找器返回的文件的屬性;
  如果屬性中有“目錄”則記錄下來;
循環體結束。
后期處理
……

上面的步驟,無論你是用F也好C也罷,都是一樣的。

4 楼

楼主如果是做系统依赖,做界面. 靠这个赚钱的就学习一下win的API.
这个论坛里面确实有人做这方面的, 但是否回答却决于别人有没有时间和你的态度.

5 楼

我敬佩用 Fortran 做数值做研究的人。

但是一些常见的操作系统依赖,有时候也迫不得已。尽管你可以低调的写成命令行程序,但如果研究需要对多个文件进行循环,这些操作系统扩展还是很方便的。

看个人爱好吧,加了它们必定影响源代码的兼容性和跨平台性。

如果是 windows 的 VF 系列,可以用编译器本身扩展的 GetFileInfoQQ 函数。

或者用 Kernel32 的 FindFirstFile 和 FindNextFile 两个 API 函数。

6 楼

呵呵,雪球兄应该是目前咱FORTRAN区最熟悉系统API的大牛了:)
我已经被C++Builder惯得忘却了很多API了:)

7 楼

[quote]我敬佩用 Fortran 做数值做研究的人。

但是一些常见的操作系统依赖,有时候也迫不得已。尽管你可以低调的写成命令行程序,但如果研究需要对多个文件进行循环,这些操作系统扩展还是很方便的。

看个人爱好吧,加了它们必定影响源代码的兼容性和跨平台性。

如果是 windows 的 VF 系列,可以用编译器本身扩展的 GetFileInfoQQ 函数。

或者用 Kernel32 的 FindFirstFile 和 FindNextFile 两个 API 函数。[/quote]

这个可以用预处理实现跨平台,利用编译器的默认定义宏
#ifdef _WIN32
   use windows api (也可以直接使用cmd命令,如dir)
#elif
   use linux api  (也可以使用shell命令,如ls)
#endif

gfortran使用-E处理,ifort使用fpp编译

这样就跨平台了,Oh yea!

8 楼

[quote]呵呵,雪球兄应该是目前咱FORTRAN区最熟悉系统API的大牛了:)
我已经被C++Builder惯得忘却了很多API了:)[/quote]
你会的好多,加入了n多圈子,单机游戏一般玩啥?

9 楼

[quote][quote]呵呵,雪球兄应该是目前咱FORTRAN区最熟悉系统API的大牛了:)
我已经被C++Builder惯得忘却了很多API了:)[/quote]
你会的好多,加入了n多圈子,单机游戏一般玩啥?[/quote]
呵呵,我游戏玩儿得非常烂,也好久没玩儿了:)
单机嘛,玩儿过:
FarCry II
极限滑板
极品飞车
等等。
RPG很少玩儿。

还有...Illusion的绝大多数作品(你懂的)哈哈:)

10 楼

我也懂的 ;)

我来回复

您尚未登录,请登录后再回复。点此登录或注册