我不确定为什么这个 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"};
并且类型 string
即 char *
。
在 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");
}
为什么这不起作用?
我认为这个 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"};
并且类型 string
即 char *
。
在 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");
}