我正在尝试使用指向数组的指针和定义的目标来比较字符串。
string destination;
int flightcompare(Flights FDA[], String destination)
{
int j=0;
Flights founddestination[10];
for (int i=0;i<MAXARRAYSIZE;i++)
{
(strcmp(Flight *FDA[i]->destination,destination)==0);
founddestination[j]= FDA[i];
j++;
}
return 1;
}
答案 0 :(得分:0)
您的strcmp
行没有任何意义,因为您没有检查比较结果的布尔值。
一般来说,它应该放在if
声明中。
还有另一个问题,因为不需要将字符串对象与strcmp
进行比较
您可以将它们与运算符==
进行比较。
if (FDA[i].destination == destination) {
// they're equal -> do something
} else {
// they're not equal -> do something else
}
假设Flights
类型具有“目标”公共成员。
此外,如果您不使用它,为什么要将它们放在founddestination
数组中?返回int的目的是什么?
如果您想知道任何不匹配目的地是否可以返回布尔值。
如果要返回相等目的地/非相等目的地的数量,可以在int中计算它们。
假设你的目标是我写的布尔解决方案:
bool flightcompare(Flights FDA[], String destination) {
for (int i = 0; i < MAXARRAYSIZE; ++i) {
if (FDA[i].destination != destination) {
return false;
}
}
return true;
}
如果您想要返回我写的匹配航班数量:
int flightcompare(Flights FDA[], String destination) {
int count = 0;
for (int i = 0; i < MAXARRAYSIZE; ++i) {
if (FDA[i].destination == destination) {
++count;
}
}
return count;
}
答案 1 :(得分:0)
我不确定编程语言,但我假设它是string
作为数据类型的语言。
在你的代码中,
末尾有一个分号strcmp(Flight *FDA[i]->destination,destination)==0);
使用strcmp
冗余。
删除那个分号。
另外,您不需要将Flight*
传递给strcmp
因此,通过这些修改,函数应如下所示:
int flightcompare(Flights FDA[], String destination)
{
int j=0;
Flights founddestination[10];
for (int i=0;i<MAXARRAYSIZE;i++)
{
if(strcmp(FDA[i]->destination,destination)==0)
{
founddestination[j]= FDA[i];
j++;
if(j >= 10)
{
break; // Stop Looping as Array is full
}
}
}
return j; // Return Count of the Flights found.
}