对于作业,我必须做一个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的二进制文件,工作得很好,从终端开始,它的行为与我的完全一样
答案 0 :(得分:2)
代码中的printf()
调用正确地将格式化的字符串放入stdout。但是,问题是C标准库文件描述符是缓冲的,因此在缓冲区已满或显式刷新之前,输出不会出现。
要刷新输出,请使用fflush
:
printf("= Athinaios\n\n");
fflush(stdout);
或者,在开始时禁用缓冲:
setbuf(stdout, NULL);
答案 1 :(得分:1)
在这种情况下,没有理由进行缓冲i / o。我使用写电话。