Arrays 我陷入了一个if-else语句中,试图比较存储在";中的两个字符串值;char";变量

Arrays 我陷入了一个if-else语句中,试图比较存储在";中的两个字符串值;char";变量,arrays,c,string,if-statement,Arrays,C,String,If Statement,我是一名初级C程序员,所以我的问题听起来可能很模糊,但请耐心听我说;)。 因此,我试图创建一个程序,用户在其中输入他所传递的主题(有三个选项:数学、物理或两者都有),然后根据输入,计算机在屏幕上打印奖金。 但是当我执行程序时,它只是在第一个IF语句之后退出,例如,如果我输入选项BOTH或PHYSICS,输出仍然显示$5 prize,只有当数学作为输入时才会显示。你们能告诉我我犯了什么错误吗? 提前感谢,, 比拉尔·艾哈迈德 #include<stdio.h> int main(int

我是一名初级C程序员,所以我的问题听起来可能很模糊,但请耐心听我说;)。 因此,我试图创建一个程序,用户在其中输入他所传递的主题(有三个选项:数学、物理或两者都有),然后根据输入,计算机在屏幕上打印奖金。 但是当我执行程序时,它只是在第一个IF语句之后退出,例如,如果我输入选项BOTH或PHYSICS,输出仍然显示$5 prize,只有当数学作为输入时才会显示。你们能告诉我我犯了什么错误吗? 提前感谢,, 比拉尔·艾哈迈德

#include<stdio.h>
int main(int argc, char const *argv[])

{
char Math,Physics,Both,subject;
printf("Please enter the name of the subjects you have passed in...\nOptionA)Math\nOptionB)Physics\nOptionC)Both\n");

scanf("%s", & subject);
if (subject= Math)
{
printf("you will receive $5\n");
}
else if (subject= Physics)
{
printf("you will receive $10\n");
}
else if (subject= Both)
{
printf("you will receive $15\n");
}
return 0
} 
#包括
int main(int argc,char const*argv[]
{
查数学,物理,两者,科目;
printf(“请输入您通过的科目名称…\n选项a)数学\n选项b)物理\n选项c)两者\n”);
scanf(“%s”,主题)(&subject);
如果(科目=数学)
{
printf(“您将收到$5\n”);
}
else if(科目=物理)
{
printf(“您将收到$10\n”);
}
else if(主题=两者)
{
printf(“您将收到$15\n”);
}
返回0
} 
声明

(subject= Math)
数学
的值指定给
主题
,并对其求值。如果它是真的,那么它将进入
If
的那个分支。你是说

(subject== Math)
只进行比较而不赋值,并且不要忘记初始化变量。快乐编码

(subject= Math)
数学
的值指定给
主题
,并对其求值。如果它是真的,那么它将进入
If
的那个分支。你是说

(subject== Math)

只进行比较而不赋值,并且不要忘记初始化变量。快乐编码

char
数据类型是存储单个字符而不是字符串。为了输入一个字符串,您需要一个字符数组。您需要理解在C中处理单个字符和字符串之间的区别

char Math,Physics,Both,subject;     // subject needs to be a character array 
printf("Please enter the name of the subjects you have passed in...\nOptionA)Math\nOptionB)Physics\nOptionC)Both\n");

scanf("%s", & subject);   // Also %s doesn't require & operator with character array.
//for character we use %c 
因此,您需要将
subject
声明为
char subject[15]
。为空终止符留下空间

其次,要比较字符串,您需要在C中使用
strcmp
-

if(strcmp(subject, "Math") == 0){
    //stuff
}
...

char
数据类型是存储单个字符而不是字符串。为了输入一个字符串,您需要一个字符数组。您需要理解在C中处理单个字符和字符串之间的区别

char Math,Physics,Both,subject;     // subject needs to be a character array 
printf("Please enter the name of the subjects you have passed in...\nOptionA)Math\nOptionB)Physics\nOptionC)Both\n");

scanf("%s", & subject);   // Also %s doesn't require & operator with character array.
//for character we use %c 
因此,您需要将
subject
声明为
char subject[15]
。为空终止符留下空间

其次,要比较字符串,您需要在C中使用
strcmp
-

if(strcmp(subject, "Math") == 0){
    //stuff
}
...

=
不是
=
C没有字符串类,
char
不是(不存在的)字符串类。从那以后,请学习你的C编程书中有关数组和字符串的章节。此外,自20世纪70年代以来就知道的=vs==bug毫无疑问也在这本书中提到过。一本好书会告诉您启用和读取编译器警告。
=
不是
=
C没有字符串类,
char
不是(不存在的)字符串类。从那以后,请学习你的C编程书中有关数组和字符串的章节。此外,自20世纪70年代以来就知道的=vs==bug毫无疑问也在这本书中提到过。一本好书会告诉您启用和阅读编译器警告。