以下是代码:
void option5 (StudentRecord student[], int n)
{
double gpaThreshold;
char enteredMajor;
int i;
cout << "Enter a GPA threshold: ";
cin >> gpaThreshold;
cin.ignore(80, '\n');
cout << "Enter a Major: ";
cin >> enteredMajor;
cin.ignore(80, '\n');
enteredMajor = toupper(enteredMajor);
for (i = 0; i < n; i++)
{
if (student[i].gpa >= gpaThreshold && student[i].major == enteredMajor)
{
if (i % 10 == 0)
{
cin.ignore();
}
cout << setw(3) << right << i+1 << ". "
<< setw(20) << left << student[i].lastName
<< setw(20) << left << student[i].firstName
<< setw(8) << left << student[i].major
<< fixed << setprecision(2) << setw(8) << left << student[i].earnedHours
<< fixed << setprecision(2) << setw(6) << left << student[i].gpa << endl;
}
}
}
StudentRecord是一个结构,该行上唯一的整数是&#39; i&#39;,而指针(我必须假设)是.major。
我想要将输入的专业与&#34; Major&#34;进行比较。数组中的值。 例如。我输入Chem - 转向CHEM - 获取该专业以下的所有学生(以及GPA的门槛) - 显示上述声明(所有&#39; X&#39; major)的学生
有什么建议吗?救命?评论?积极/消极的反馈?
编辑:这是结构:
struct StudentRecord
{
char lastName [16]; // field definitions of the structure
char firstName[16];
char hometown [16];
char major[5];
int studentNumber;
double balance;
int earnedHours;
double gpa;
};
答案 0 :(得分:2)
考虑这个片段:
student[i].major == enteredMajor
student[i].major
是char[5]
,在此上下文中会转换为char*
。这是指针类型。
enteredMajor
是char
。这是一个完整的类型。
您无法比较这些类型。
也许你的意思就是去enteredMajor
:
char enteredMajor[5];
并将它们比作:
strcmp(student[i].major, enteredMajor) == 0
答案 1 :(得分:1)
student[i].major
是一个char
数组;当在表达式中使用时,它会衰减为指向char
的指针。代码将其与具有类型enteredMajor
的{{1}}进行相等性比较。因此投诉:无法比较指针和整数(因为char
被提升为char
)。