主题:还是那个问题,一次提出来,求完整答案,帮帮新手吧
这个问题我发了三个帖子,署名rainboat8的就是,分三次发就是想把问题拆开了慢慢研究明白,奈何答案实在看不懂,有时候又不统一,查半天书发现这貌似不是一两天能搞明白的。后天就要交差了,现在把问题一次晾出来,求一个完整答案,不仅交差,也方便学习,望各路大神再显神通,救救小弟吧,小弟刚会了一点基本的fortran语法就被老师安排了这样的任务……
问题是这样的:
有一个A.exe,不知道源代码,只能直接运行。它是那种可以跟人交流的程序(这里不知道专业术语叫什么),它会提问题,你要回答n或y,或者数据,它会做出相应反应,并会输出一个文件作为结果。
我现在要编一个B.f90,在这个程序里use dflib,用里面的runqq('文件名','')函数可以令A.exe程序运行起来(这个试过了,可以用),然后在B中输出一个C.txt文件,C里包含的都是A所需要的n、y或者数据、字符串之类的(这个我还可以勉强做到)。然后问题就来了,A已经运行了,如何让C变成A的“输入者”,即如何把C中的字符或数据作为A的命令,这里有段C++代码好像可以借鉴(不知道好不好用,没试过):
int old_in = dup(0);
FILE* fin = fopen( "111.txt ", "r");
dup2(fileno(fin), 0);
貌似是把111.txt的什么接口号变成了A的输入接口号。所以我原先发帖求助怎样在fortran中使用api函数,后来又想问怎样fortran和c++混合编程但没问,直接问个全的吧,小弟只会最基本的语法,所以以前的好多回答很惭愧确实看不懂(像有位提到的管道,网上查了也没懂),希望大神能直接告诉我具体过程或者告诉我具体该查哪一章节。
这个问题问个好多师兄,但他们都是对算法熟悉,对编译器的函数什么的不熟,所以我觉得能回答这问题的都是编程高手。哦,最后补充一下,我用的是cvf6.5,xp系统,那个C.txt的格式是这样的:
n
y
1
2
abc
几个论坛里就这个有人回答了前两个帖子,其他论坛一个回复也没… 以后就在这混了。
问题是这样的:
有一个A.exe,不知道源代码,只能直接运行。它是那种可以跟人交流的程序(这里不知道专业术语叫什么),它会提问题,你要回答n或y,或者数据,它会做出相应反应,并会输出一个文件作为结果。
我现在要编一个B.f90,在这个程序里use dflib,用里面的runqq('文件名','')函数可以令A.exe程序运行起来(这个试过了,可以用),然后在B中输出一个C.txt文件,C里包含的都是A所需要的n、y或者数据、字符串之类的(这个我还可以勉强做到)。然后问题就来了,A已经运行了,如何让C变成A的“输入者”,即如何把C中的字符或数据作为A的命令,这里有段C++代码好像可以借鉴(不知道好不好用,没试过):
int old_in = dup(0);
FILE* fin = fopen( "111.txt ", "r");
dup2(fileno(fin), 0);
貌似是把111.txt的什么接口号变成了A的输入接口号。所以我原先发帖求助怎样在fortran中使用api函数,后来又想问怎样fortran和c++混合编程但没问,直接问个全的吧,小弟只会最基本的语法,所以以前的好多回答很惭愧确实看不懂(像有位提到的管道,网上查了也没懂),希望大神能直接告诉我具体过程或者告诉我具体该查哪一章节。
这个问题问个好多师兄,但他们都是对算法熟悉,对编译器的函数什么的不熟,所以我觉得能回答这问题的都是编程高手。哦,最后补充一下,我用的是cvf6.5,xp系统,那个C.txt的格式是这样的:
n
y
1
2
abc
几个论坛里就这个有人回答了前两个帖子,其他论坛一个回复也没… 以后就在这混了。