jellynce_w 发表于 2022-11-22 15:01:50

在Fortran90中调用一个可执行程序‘name.exe’,如何给...

如图,name.exe是一个命令行程序没有界面,需要在命令行中输入文件名称'file.txt',按下回车键才可执行程序,请问怎么能用Fortran90实现呢?另外call system这种语句的具体格式是什么呢?有没有可以学习的资料?查了好久都没找到,请各位大神帮忙!!



楚香饭 发表于 2022-11-22 16:40:59

本帖最后由 楚香饭 于 2022-11-22 16:51 编辑

call system("echo file.txt>a.inp & name.exe <a.inp & del a.inp")

你可以去了解操作系统的命令行规则。这事和 system 函数没啥关系,和Fortran更没啥关系。
它就是让操作系统执行一个命令行指令而已。写法规则遵循操作系统的规定。(windows和linux可能有差异)

jellynce_w 发表于 2022-11-23 15:00:10

楚香饭 发表于 2022-11-22 16:40
call system("echo file.txt>a.inp & name.exe

原来是这样。。。我说怎么找遍Fortran的教材都没有相关资料,多谢大神指导:-lol:-lol

jellynce_w 发表于 2022-11-23 19:08:50

楚香饭 发表于 2022-11-22 16:40
call system("echo file.txt>a.inp & name.exe

想再请教您一个问题,如果想循环调用name.exe来计算file1.txt、file2.txt、file3.txt、、、这件事可以用Fortran实现吗?因为我发现call system("里面的元素不能在Fortran中声明定义")
于是我想了个笨办法:
call system("echo file1.txt>a.inp & name.exe <a.inp & del a.inp")
call system("echo file2.txt>a.inp & name.exe <a.inp & del a.inp")
call system("echo file3.txt>a.inp & name.exe <a.inp & del a.inp")



不知道您还有没有更好的方式?

楚香饭 发表于 2022-11-24 09:03:38

本帖最后由 楚香饭 于 2022-11-24 09:05 编辑

character(len=16) :: c
Do i = 1 , 3
write(c,*) i
call system("echo file"//trim(adjustl(c))//".txt>a.inp & name.exe <a.inp & del a.inp")
End Do

jellynce_w 发表于 2022-11-24 10:14:36

本帖最后由 jellynce_w 于 2022-11-24 10:17 编辑

楚香饭 发表于 2022-11-24 09:03
character(len=16) :: c
Do i = 1 , 3
write(c,*) i

太强了!!!万分感谢您百忙之中抽出的时间!!
页: [1]
查看完整版本: 在Fortran90中调用一个可执行程序‘name.exe’,如何给...