c - 如何修复这个 if else 语句?c 程序

标签 c

我应该怎么做才能解决这个问题?

Piece player1,player2;


printf("\nChess\n");

printf("\nInput Player 1 name:");
scanf("%s",&player1.plaVar.name);

printf("\nPlayer 1 color:(black or white):");
scanf("%s",&player1.plaVar.color);
fflush(stdin);

if(player1.plaVar.color=="b","l","a","c","k")
{
    printf("\nPlayer 2  is white\n");
    fflush(stdin);
}
else if(player1.plaVar.color=="w","h","i","t","e")
{
    printf("\nPlayer 2 color is black\n");
    fflush(stdin);
}

printf("\nInput Player 2 name:");
scanf("%s",&player2.plaVar.name);   

这段代码的结果: 玩家1名称:neee

玩家1颜色(黑色或白色):白色

玩家2颜色:白色 //它应该是黑色的

最佳答案

全部,

实际上,我很惊讶地看到上面源代码中的“if”语句是正确的 - 已 checkin http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf 。这样的构造是可编译的(在 GCC 7.3 上检查)。我每天都学到新东西......

但是回到问题的根源:

我无法理解 scanf("%s",&player1.plaVar.name); 它告诉我您要输入一个字符串,然后 if(player1.plaVar. color=="b","l","a","c","k") 与字符串的可能值之一相比,是未知类型的变量(您没有包含其定义) 。我猜你尝试比较字符串,所以在这种情况下,最好的方法是使用 strcmp() 函数,如 @Thomas Jager 建议的那样。

此外,从可读性的角度来看,我认为这种 if 比较编码方式并不合适。请查找有关如何编写干净且可维护的代码的信息。

关于c - 如何修复这个 if else 语句?c 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55357835/

相关文章:

c - C中打印指针地址【二问】

c - 如何获取与 TCP 套接字关联的接口(interface)名称/索引?

c - rpmsg-lite 协议(protocol)的 Linux 用户空间示例

c - 需要帮助调试简单的控制台游戏

c - C 中的 fscanf() 对 float 进行四舍五入

c - C中的无限循环

与 Go 之间的 C 指针转换

c - 第一次遍历后链表出现段错误

c - 为什么这个断言会失败呢?

c - Scanf - 每个引用的变量 VS 每个引用的参数