繁体   English   中英

C,if语句中的字符比较

[英]Char comparison in C, if-statement

我的代码遇到这个问题。 问题是我需要比较两个字符na[p]但结果始终是负数。 这是我分配的一个小测验程序。 q[]是一个问题数组,而a[]是一个答案数组。 玩家输入tf表示是非,但if似乎不起作用,因为它始终显示“ You输!”。 (即使条件为真)。

char questions(){
const char *q [100];
q[0]= "Centipedes always have 100 feet."; //f
q[1] = "Marie Curie’s husband was called Pierre."; //t
[...]
q[99] = "";

const char *a[100];
a[0] = "f";
a[1] = "t";
[...]
a[99] = "";

char n;
int p, i;
for (i = 0; i<=7; ++i)
{
    srand(time(NULL));
    p = (rand() % 18);

    printf("\n");
    printf(q[p]);
    printf("\n");

    fflush(stdin);
    scanf("%c", &n);

    if (n == a[p]){
        printf("Correct answer!\n");
    }
    else
    {
        printf("You lose!");
        break;
    }

}

看起来您分配a作为字符指针数组(即c字符串数组)而不是字符数组:

const char *a[100];

尝试分配一个字符数组而不是一个字符指针数组,并将值初始化为字符而不是c字符串:

  • const char *a[100]; 成为char a[100]; -不要忘记删除const因为稍后您将值写入数组。

  • a[0] = "f"; 变成a[0] = 'f';

您的测试是错误的。 您目前正在测试charchar * ...

两种纠正方法:

  1. 将a声明为chars数组,而不是char * char a[100]; 然后用a[0]='f';初始化它们a[0]='f';
  2. 或将测试更改为if (n==a[p][0])以便针对第p个字符串的第一个字符测试n

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM