fortran中的字符串和使用它们的文件名

fed*_*asu 5 string fortran

这是麻烦......我正在动态构建(而不是改变)一个包含数字(数字)的字符串(比如有文件名out01.txt,out02.txt等...)

我的程序工作正常(我使用最后更新的值字符串来命名文件并编辑该文件)...但是在"ls"命令的同一目录中,我可以看到创建的文件并通过文件浏览器我可以访问但它从命令行使用vim,gedit我无法打开它同名的新文件正在打开...而且我无法从命令行删除该文件(rm out010.txt'没有这样的文件或目录)这里是代码,我可能无法解释我的问题但代码会说明一切......

program strtest
implicit none
 character(len=1024)::filen,format_str
 integer::i
 format_str="(a5,i0.3,'.txt')"
 do i=1,10 
  write(filen,format_str)'out',i
 end do
write(*,*)trim(filen)
open(23,file=trim(filen))
write(23,*)"what a mess!"
close(23)
stop
end program strtest
Run Code Online (Sandbox Code Playgroud)

注意:即使不在文件打开语句中使用trim()函数,我也有同样的问题

请解释一下我的情况!!

问候 ...

jon*_*sca 7

你的文件名前面有两个空格,所以如果你放rm " out01.txt"(2个空格,out01.txt),你就可以删除它们.这是a5,它抛弃了格式字符串.


ev-*_*-br 7

正如@jonsca已经指出的那样,问题在于额外的空白.摆脱它的最简单方法是使用adjustl,如下所示:

open(23,file=trim(adjustl(filen)))
Run Code Online (Sandbox Code Playgroud)