我不确定为什么这个 if 语句不起作用

I'm not sure why this if statement isn't work

为什么这不起作用?

我认为这个 if 语句中的逻辑有缺陷,但我确定到底哪里出了问题。

编辑:我忘记添加头文件以及 int main(void)。现在一切都应该在那里

int main(void){
#include <cs50.h>
#include <string.h>
#include <ctype.h>
#include <stdio.h>
string word = "APPPLE";
string alphabet[] = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", 
"P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};


    if (word[0] == alphabet[0])
    {
        printf("this program works");
    }
}

                  

C 中没有 in-built 名为“string”的名称。 相反,字符数组用于处理字符串。 以下代码可能对您有所帮助。

#include <stdio.h>

int main() {

     char word[] = "APPPLE";

     char alphabet[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};

     if (word[0] == alphabet[0]) 

        printf("this program works");

    return 0;
}

指针字(string 是 char * 类型的 typedef)指向字符串文字的第一个字符 "APPLE"

string word = "APPPLE";

所以表达式 word[0] 的类型是 char.

数组的元素 alphabet 指向另一个字符串文字。

string alphabet[] = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", 
"P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};

并且类型 stringchar *

在 if 语句中,您试图将字符 words[0] 与指针 alphabet[0]

进行比较
if (word[0] == alphabet[0])
{
    printf("this program works");
}

这没有意义。

您需要的是以下内容

if (word[0] == alphabet[0][0])
{
    printf("this program works");
}

虽然像这样声明数组字母会更好

string alphabet = {"ABCDEFGHIJKLMNOPQRSTUVWXYZ"};

在这种情况下,if 语句看起来像

if (word[0] == alphabet[0])
{
    printf("this program works");
}