回 帖 发 新 帖 刷新版面

主题:如何将生成文件存放到指定文件夹? (已解决 附答案)

小弟的程序运行后会生成N多需要的dat,但是这些生成的文件都在.for文件夹里,总是看起来乱糟糟...

可不可以指定生成到另外的文件夹中? (比如说在桌面上创建的文件夹)

还希望能详细说明一下。

多谢指教!

回复列表 (共14个回复)

沙发

改程序。
或是看看源码里是否支持执行期间指定文件夹。

板凳

Open(12,File='c:\document and setting\user\桌面\*.dat'

或者是编译以后把 exe 拷贝到其他文件夹再运行

3 楼

多谢两位指教! 虽然还是没有完成纠错...

小弟的程序是这样的: 

open(21, file='sum'//varnr//'.dat')
open(22, file='t1s'//varnr//'.dat')
open(23, file='t2s'//varnr//'.dat')
open(24, file='did'//varnr//'.dat')
open(25, file='sca'//varnr//'.dat')

根据两位的提示方 法 ,以第一行为例,小弟改成这样:
open(21, File='c:\document and setting\user\桌面\sum'//varnr//'.dat') 

ctrl +F7 之后提示8个错误。 
Error: Unterminated character constant
Error: Syntax error, found END-OF-STATEMENT when expecting one of: , )
Error: Unrecognized token '\' skipped
Error: Unterminated character constant
等等。 

用的是 compaq visual Fortran 6.1.0 软件。 

恳请各位师兄师姐赐教 ! 

4 楼

我这里没问题啊。

5 楼

open(21, File='c:\document and setting\user\桌面\sum'//varnr//'.dat')
open(22, File='c:\document and setting\user\桌面\t1s'//varnr//'.dat')
open(23, File='c:\document and setting\user\桌面\t2s'//varnr//'.dat')
open(24, File='c:\document and setting\user\桌面\did'//varnr//'.dat')
open(25, File='c:\document and setting\user\桌面\sca'//varnr//'.dat') 

依然纠错不能, 提示同样错误 - -lll

6 楼

这类问题最好交给第三方程序实现。有 systemqq 调用 Windows CMD 命令建立文件夹,但它的参数似乎只能是字符常量,做不到动态建立。

如果是混编,就不要让 fortran 为难了;如果不是,老实手动建个文件夹吧。

7 楼

楼主的问题是:

Error: Unterminated character constant
Error: Syntax error, found END-OF-STATEMENT when expecting one of: , )
Error: Unrecognized token '\' skipped
Error: Unterminated character constant

这是编译错误,跟混编什么没关系。

说明楼主的语法写得有问题。我不知道楼主用的哪个编译器??发生错误的行是哪一行?确定是本行的么?

另外,反对楼上的说法。文件路径是操作系统的问题,语法并没有规定。文件名(含路径)是传递给操作系统的。Fortran完全可以自己去做。

就算用 cmd 新建文件夹, md 命令只接收字符常量,依然可以用Fortran构建 md 命令。动态建立完全可能。

[quote][font=宋体][color=#FF0000]Program [/color][color=#000000]Main
  [/color][color=#FF0000]USE [/color][color=#000000]DFLIB 
  [/color][color=#FF0000]Implicit None
  Character[/color][color=#000080]([/color][color=#800080]512[/color][color=#000080]) :: [/color][color=#000000]c
  [/color][color=#FF0000]Integer [/color][color=#000000]i [/color][color=#000080], [/color][color=#000000]iRes
  [/color][color=#FF0000]Do [/color][color=#000000]i [/color][color=#000080]= [/color][color=#800080]1 [/color][color=#000080], [/color][color=#800080]5
    [/color][color=#FF0000]Write[/color][color=#000080]([/color][color=#000000]c[/color][color=#000080],*) [/color][color=#000000]i
    iRes [/color][color=#000080]= [/color][color=#000000]SystemQQ[/color][color=#000080]( [/color][color=#808080]"md "[/color][color=#000080]//[/color][color=#FF0080]Trim[/color][color=#000080]([/color][color=#000000]c[/color][color=#000080]) )
  [/color][color=#FF0000]End Do
End Program [/color][color=#000000]Main[/color][/font][/quote]

8 楼

嗯,与混编当然无关,我只是假设而已。要谢谢你的 md 动态参数调用方式,受用。

9 楼

楼主把路径改一下,不要用中文名,试一试。

10 楼

问题已解决, 其实很- -lll.请看:

(软件是 compaq visual Fortran 6.1.0)

我用的是90, 导师老爷爷用的是77, 源程序当然也是77---

换行的时候不能用&...

   open(21, File='c:\document and setting\user\

1desktop\sum'//varnr//'.dat')

写成这样就行了.

应该和语言无关, 我是用英文系統電腦 (没中文).

(于是乎...为了回帖必须善用GOOGLE的拼音to汉字功能 = =)

多谢各位师兄师姐的帮助!

我来回复

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