我有以下代码尝试为2个不同的玩家获得2个值,但是此代码导致出现不需要的第三行,如下所示。
for(int i = 0; i < 6; i++){
printf("Player %c>", player);
fgets(move, 4, stdin);
y_coord = strtok(move, sp);
x_coord = strtok(NULL, sp);
printf("You entered: %s, %s\n", x_coord, y_coord);
if(player == 'O'){
player = 'X';
}
else{
player = 'O';
}
}
输出:
Player O>5 5
You entered: 5, 5
Player X>You entered: (null),
Player O>^C
答案 0 :(得分:1)
问题是你只能读取三个字符,这会在输入缓冲区中留下换行符。
传递给fgets
的大小必须包含终止'\0'
字符,因此要让fgets
读取换行符,您需要一个5
字符的缓冲区大小,即
char move[5]; // Two characters separated by space, plus newline and terminator
...
fgets(move, sizeof(move), stdin);