文件未在C中正确加载

时间:2015-03-19 14:46:47

标签: c string compare

我正在尝试使用指向数组的指针和定义的目标来比较字符串。

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

2 个答案:

答案 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.
}