TL; DR:如何让我的scanf(必须是scanf)从python中读取输入?
所以我在python中有这个文件
import subprocess
import sys
process=subprocess.Popen(["canCHandleIt.exe"],stdout=subprocess.PIPE)
res=process.communicate(2)
print res[0]
重点很简单。我希望我的C能够捕获数字“2”并打印成功两次,正如我的c代码建议的那样。
#include <stdio.h>
int main(){
int x;int o;
scanf("%d",&x);
for (o=0;o<x;o++){
printf("Sucsess!");
}
}
但它停止了。当然如果键入数字2,那么它将起作用,但我希望我的scanf单独工作。
有些人可能会建议我只使用C等效于Python的sys.stdin.readline()
,但我真的希望我的scanf能够在没有人为干扰的情况下工作。 (之所以我问这个,是因为我经常人们在比赛中使用scanf,我想在python中复制比赛机器人,显然。)
你可以假设我已经使用了我的c文件。
答案 0 :(得分:4)
试试这个:
import subprocess
import sys
process=subprocess.Popen(["canCHandleIt.exe"], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
res=process.communicate('2')
print res[0]
... stdin=subprocess.PIPE
传递给Popen()
,传递&#34; 2&#34;作为字符串而不是int
加入communicate()
。
communicate()
记录了:
可选的输入参数应该是要发送给子级的字符串 过程.....
和
请注意,如果要将数据发送到进程的stdin,则需要 使用stdin = PIPE创建Popen对象。