我被要求为类编写一个函数,允许用户搜索结构数组。该函数要求用户输入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。这确实更有意义。我只是按照教授的教导方式去做。我将发布那篇文章,然后使用这些方法调试程序。如果我还有问题,我会告诉你。我希望我没有看到懒惰,寻找一个便宜的答案。只是想确保我没有遗漏任何明显的东西。谢谢!