如何以不区分大小写的方式比较两个字符



我正在创建一个简单的石头剪刀游戏,在这个游戏中,我从标准输入中读取两个字符。这些字符中的每一个都应该是以下字符之一:'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>那会帮你的。

这些函数是:tolowertoupper。它们以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')

最新更新