搜索功能找不到结构中的第一个元素

时间:2017-03-20 18:50:59

标签: c

我被要求为类编写一个函数,允许用户搜索结构数组。该函数要求用户输入ID,然后如果找到则显示结构的其他部分。除了数组中的第一个元素([0])之外,这非常有效。我不断得到-1,或者找不到,我似乎无法弄明白为什么。

int i = 0;
for(; i < totalEng; i++)//loop to find the engine ID
{
    if(search == (peng + i)->id)
        return i;
}

return - 1;

这是适用于每个ID的搜索功能,但这个

(peng + 0)->id   = 111;
(peng + 0)->hp   = 500;
(peng + 0)->size = 4.5;

感谢先进的任何帮助!

编辑:这是我填充数组的函数

void populateEng(engine* peng)
{
//--------------------
(peng + 0)->id   = 111;
(peng + 0)->hp   = 500;
(peng + 0)->size = 4.5;
//---------------------
(peng + 1)->id   = 222;
(peng + 1)->hp   = 120;
(peng + 1)->size = 1.2;
//---------------------
(peng + 2)->id   = 333;
(peng + 2)->hp   = 300;
(peng + 2)->size = 6.5;
//---------------------
(peng + 3)->id   = 444;
(peng + 3)->hp   = 95;
(peng + 3)->size = 1.5;
//---------------------
(peng + 4)->id   = 555;
(peng + 4)->hp   = 200;
(peng + 4)->size = 2.5;
//---------------------
(peng + 5)->id   = 666;
(peng + 5)->hp   = 700;
(peng + 5)->size = 5.0;
//---------------------
}

这是完整的搜索功能

int searchEng(engine* peng, int totalEng)
{
char input[5];
char* pinput = NULL;
int i = 0;
int length = 0;
int search = 0;

printf("Enter the ID of the engine you wish to search for: ");
pinput = fgets(input, buffer, stdin);
length = strlen(input);

 for(; i < length - 1; i++)//making sure the user enters only 3-4 numbers
{
    if(length > 5 || length < 3)
    {
    i = 0;
    printf("Invalid input. Please enter up to 4 numbers only: ");
    pinput = fgets(input, buffer, stdin);
    length = strlen(input);
    }
    if(input[i] < '0' || input[i] > '9')
    {
    i = 0;
    printf("Invalid input. Please enter up to 4 numbers only: ");
    pinput = fgets(input, buffer, stdin);
    length = strlen(input);
    }

}

search = atoi(input);//converting the input into an integer to search


for(i = 0; i < totalEng; i++)//loop to find the engine ID
{
    if(search == (peng + i)->id)
        return i;
}

return - 1;


}//end searchEng

edit2:我有结构和数组定义如下:

struct engine
{
int id;
int hp;
double size;

}typedef engine;

int main()
{
//declarations:
engine eng[100];
engine* peng = &eng[0];
...

edit3:谢谢大家的耐心,我应该刚开始发布所有这些内容。如果首选,我可以在一个帖子中创建一个新帖子。另外,我现在正在阅读那篇文章。再次感谢!我不会两次犯同样的错误。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define buffer 10

edit4:谢谢BLUEPIXY。这确实更有意义。我只是按照教授的教导方式去做。我将发布那篇文章,然后使用这些方法调试程序。如果我还有问题,我会告诉你。我希望我没有看到懒惰,寻找一个便宜的答案。只是想确保我没有遗漏任何明显的东西。谢谢!

0 个答案:

没有答案