[英]How do I compare two characters in a case-insensitive manner?
我正在创建一个简单的石头剪刀布游戏,我从标准输入中读取两个字符。 这些字符中的每一个都应该是以下之一: 'r'
(岩石)、 'p'
(纸)或's'
(剪刀)。
为了确定获胜者,我比较了这样的字符:
if ( player1 == 'r' && player2 == 's' )
printf( "Player-1 wins! Rock breaks scissors!\n" );
如果两个字符都以小写形式输入,则此比较可以正常工作。 但是,如果其中一个字符是大写( 'R'
、 'P'
或'S'
),则比较将无法正常进行。 我希望比较能够正确处理小写和大写字符。
我的想法是使比较看起来像这样:
if ( player1 == 'r','R' && player2 == 's','S')
printf( "Player-1 wins! Rock breaks scissors!\n" );
如何正确执行此比较?
使用此函数: tolower
,因此每次比较都将与转换为小写字母后进行比较的字母进行比较。
if (tolower(player1) == 'r' && tolower(players2) == 's')
头文件 <ctype.h> 中有一对函数可以帮助您。
这些函数是: tolower
和toupper
。 它们将 char 作为参数并分别以小写/大写形式返回此值(如果 char 不是字母,则返回未更改的值)。
您可以做的是转换为大写或小写并与单个字母进行比较。
if (tolower(player1) == 'r' && tolower(player2) == 's')
或者
if (toupper(player1) == 'R' && toupper(player2) == 'S')
我上面提到的这种方式需要更少的代码并且更容易阅读。
但是,如果您不想使用这些函数,以下代码是您想要的结果所需的修复:
if ((player1 == 'r' || player1 == 'R') && (player2 == 's' || player2 == 'S'))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.