如何搜索数组?

时间:2013-11-08 14:47:49

标签: c arrays database loops

对于我的作业,我必须创建一个允许用户输入学生信息(ID,DOB和电话号码)的结构。这样做很简单,我没有问题。现在我需要使用学生ID搜索输入信息,以显示学生对应的DOB和电话号码,这是我遇到的问题。如果你看到我的程序有任何其他问题,请告诉我有什么问题,为什么我应该改变,以便我可以从错误中吸取教训。

我也不确定如何将学生信息的所有这些不同部分存储到数组中并使它们彼此对应。因此,当我搜索ID时,它如何知道返回正确的DOB和电话。我真的迷失在这里,需要一些帮助。无论你告诉我什么,或者你给我代码,请解释为什么我应该做你告诉我做的事情。

注意:我所有的课程都在线,所以抓住我的教授寻求帮助是一项挑战,所以我向你们寻求帮助。

#include <stdio.h>
#include <stdlib.h>

struct infoStruct 
{
    int studentID;
    int year;
    int month;
    int day;
    int phone;
    int end;
};

int main (void)
{
    int students = 0;   
    int infoArray [students];
    struct infoStruct info;
    int studentID;
    int year;
    int month;
    int day;
    int phone;
    int end;



    while (info.end != -1) {
        students = students + 1;
        printf("Enter student information (ID, day, month, year, phone)\n");
        printf("Enter -1 following the phone number to end the process to continue enter 0\n");
        scanf("%d %d %d %d %d %d", &info.studentID, &info.day, &info.month, &info.year, &info.phone, &info.end);
    }
    if (info.end = -1){
        printf("You entered %d student(s)\n", students);
    }
    //Student Search
    printf("Please enter the student ID of the student your looking for\n.");
    scanf("%d", info.studentID);
    printf(" DOB: %d %d %d, Phone: %d", info.month, info.day, info.year, info.phone);

}

3 个答案:

答案 0 :(得分:0)

我需要更好地阅读,但是,为了简化您的代码,为了阅读它,不要在主函数中编写所有内容并在函数中分开。之后,您可以调用这些函数,并且通过它们的名称,程序理解将会增加。

答案 1 :(得分:0)

好的,所以你需要使用学生ID搜索infoArray。 首先,我认为您希望您的数组类型为infoStruct(代表学生)。 students是数组元素的数量。

//storing the student info
for (int i=0;i<students;++i)
{
  scanf("%d %d[...]",&infoArray[i].studentID, &infoArray[i].year[...]);
}

假设您正在搜索其ID为例如id1的学生。 你会这样做:

for (int i=0;i<students;++i)
{
  if (infoArray[i].studentID==id1)
  printf("%d",infoArray[i].phone);
}

我不太确定我理解你的问题,但我希望这会有所帮助。

答案 2 :(得分:0)

首先要注意的是......

初始化students = 0,然后将名为infoArray的整数数组的大小设置为0.这就是int infoArray[students]的作用。

接下来,您不需要初始化结构中的每个元素,因为这就是结构的用途。简单地说struct infoStruct info;就可以了。不要忘记如果使用指针(即struct infoStruct *info),则需要使用malloc为该结构分配内存。

但是,要设置一个结构数组,它是一行简单的代码: struct infoStruct info[x] x是你想要制作数组的大小。请记住,如果你像上面那样设置x等于0并尝试向数组中添加一个元素,你将得到一个segFault,因为还没有为它分配内存。

最后,您现在可以使用for循环搜索该数组。