gpt4 book ai didi

c - fgets 或 strtok 错误返回不需要的第三行

转载 作者:行者123 更新时间:2023-11-30 15:06:25 25 4
gpt4 key购买 nike

我使用以下代码尝试为 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

最佳答案

问题是您只读取了三个字符,这使得换行符留在输入缓冲区中。

传递给 fgets 的大小必须包含终止 '\0' 字符,因此要让 fgets 读取换行符,您需要 5 字符的缓冲区大小,即

char move[5];  // Two characters separated by space, plus newline and terminator
...
fgets(move, sizeof(move), stdin);

关于c - fgets 或 strtok 错误返回不需要的第三行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39020734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com