关于#c语言#的问题:入门C语言|“三子棋”bug优化

当用户输入棋子坐标时,若两个数值之间没有输入空格,则不会打印下棋后的棋盘。

求解惑!

img

scanf函数中的%d读取规则是先检索正负号,再检索数字,第一次遇到其它字符后停止检索,并保存在对应地址,如果后面还有%d,则重复上面的检索,知道所有字符检索完,或者没有字符直接结束检索。按照你这个输入,保存在x中的是21,y中没有保存值,是内存中随机的一个数字,所以判断为非法输入。

以下答案引用自GPT-3大模型,请合理使用:

解决办法:
1. 使用scanf()函数,读取用户输入的两个数值,使用"%d %d"格式读取,这样可以确保scanf()正确读取用户输入的两个数值,避免不输入空格而造成此类Bug. 

下面是实现以上思路,代码如下所示:
#include <stdio.h>
void main()
{
    int x, y;
    printf("请输入要落子的坐标(x y):");
    // 使用"%d %d"格式,确保输入的数值正确读取
    scanf("%d %d", &x, &y);
    printf("您落子的坐标为:(%d, %d)\n", x, y);
    // 打印下棋后的棋盘
   // ...
}

如果我的回答解决了您的问题,请采纳我的回答

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^