Python程序没有接收printf的输出

时间:2016-01-18 19:25:43

标签: python c

对于作业,我必须做一个quoridor游戏,游戏必须与用python编写的裁判进行通信,这样两个quoridor客户端可以对抗其他一个,因为某些原因我在c程序中打印ff python实例没有&# 39;收到,或者我的c程序没有通过scanf从python裁判那里收到任何东西

我运行裁判的方式就是那样

./referee.py --black ./quoridor  --white ./quoridor 

它发送给./quoridor的第一个命令是命令" name"并且quoridor必须以其名称作出响应,如果我运行./quoridor并且它只是找到它的类型名称,它会响应名称。但那不是裁判的情况。

char command[MAX_COM_SIZE];
scanf("%s",command);
if(strcmpIgnoreCase(command,"name")==0){
    printf("= Athinaios\n\n");
}

教授给了我一个quoridor的二进制文件,工作得很好,从终端开始,它的行为与我的完全一样

2 个答案:

答案 0 :(得分:2)

代码中的printf()调用正确地将格式化的字符串放入stdout。但是,问题是C标准库文件描述符是缓冲的,因此在缓冲区已满或显式刷新之前,输出不会出现。

要刷新输出,请使用fflush

printf("= Athinaios\n\n");
fflush(stdout);

或者,在开始时禁用缓冲:

setbuf(stdout, NULL);

答案 1 :(得分:1)

在这种情况下,没有理由进行缓冲i / o。我使用写电话。