Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 当使用stdlib.h中的system()从程序中运行程序时,如何模拟键入以提供子程序的scanf调用?_C++_C - Fatal编程技术网

C++ 当使用stdlib.h中的system()从程序中运行程序时,如何模拟键入以提供子程序的scanf调用?

C++ 当使用stdlib.h中的system()从程序中运行程序时,如何模拟键入以提供子程序的scanf调用?,c++,c,C++,C,我正在编写一个程序,反复运行一个不同的程序,每次给一个问题不同的输入,检查输出。系统\u程序完成了这一点,但是当它运行scanf时,我如何给程序输入?最简单的方法是编写一个文件,并使用重定向系统将其传递给子系统\u程序

我正在编写一个程序,反复运行一个不同的程序,每次给一个问题不同的输入,检查输出。系统\u程序完成了这一点,但是当它运行scanf时,我如何给程序输入?

最简单的方法是编写一个文件,并使用重定向系统将其传递给子系统\u程序 但是,这样更好,你可以在你的程序和孩子之间建立一个管道。子级需要将其标准输入文件描述符0连接到管道的读取端。系统是同步的,所以除了pipe和dup2之外,还需要fork和execve系统调用。幸运的是,这个过程有一个包装器:popenthe_程序,w。它返回一个可以写入的文件*。使用pclose关闭文件*,并确保阅读手册,因为它与fclose不同

在编写父程序和子程序的情况下,不需要通过模拟其他程序来解决问题,我们只需传入参数:

系统“/\u程序\u扫描\u输入”

当然,联合大学项目:

var = argv[1] //this was var = scanf('%', &var)

我相信fork和另一个系统“input”调用可以做到这一点。信心评级不够高,无法作为答案发布。。!已经完成了-请参阅,因为我没有访问子级源的权限,所以无法修改它以接受作为参数的输入。它需要扫描。哦,我的道歉-我以为你们两个都在写。编辑答案以反映。编辑:阅读后,波本似乎只允许单向运动;我需要双向输入,以便将输出与输入进行比较。因此,我将不得不自己做管道和叉子之类的事情。非常感谢你。