-1

对于我的作业,我必须创建一个允许用户输入学生信息(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);

}
4

3 回答 3

0

首先要注意...

您进行初始化students = 0,然后将调用的整数数组的大小设置infoArray为 0。就是int infoArray[students]这样。

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

但是,要设置一个结构数组,只需 1 行简单的代码: struct infoStruct info[x]x 是您希望创建数组的大小。请记住,如果您像上面那样将 x 设置为 0 并尝试向数组中添加一个元素,您将得到一个 segFault,因为尚未为其分配内存。

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

于 2013-11-08T15:37:23.710 回答
0

我需要更好地阅读你想要做的事情,但是,为了简化你的代码,对于阅读它的人来说,不要把所有的东西都写在你的 main 和单独的函数中。之后,您可以调用该函数,并使用它们的名称来增加对程序的理解。

于 2013-11-08T15:01:27.203 回答
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);
}

我不确定我是否很好地理解了你的问题,但我希望这会有所帮助。

于 2013-11-08T15:01:32.247 回答