我正在创建一个简单的石头剪刀游戏,在这个游戏中,我从标准输入中读取两个字符。这些字符中的每一个都应该是以下字符之一:'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" );
如何正确执行此比较?
头中有一对函数<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'))
使用这个函数:tolower
,所以每次将其与转换为小写后进行比较的字母进行比较。
if (tolower(player1) == 'r' && tolower(players2) == 's')