我陷入了if else语句中,试图比较存储在“ char”变量中的两个字符串值

问题描述

我是C语言的初学者,所以我的问题听起来很含糊,但请耐心等待;)。 因此,我试图创建一个程序,在该程序中,用户输入他所通过的主题(三个选项:数学,物理或两者),并根据输入,计算机将奖金打印在屏幕上。 但是,当我执行程序时,它仅在第一个IF语句之后退出,例如,如果我输入BOTH或PHYSICS选项,则输出显示$ 5奖金,仅当给出数学运算作为输入时才应显示。你们能指导我犯什么错误吗? 提前致谢, 比拉勒·艾哈迈德(Bilal Ahmed)。

#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
} 

解决方法

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
}
...
,

的声明

(subject= Math)

Math的值分配给subject并对其求值。如果正确,它将进入if的分支。你的意思是

(subject== Math)

仅用于比较而不分配,也不要忘记初始化变量。编码愉快!