在用户输入结构后,如何搜索结构并显示某些信息?

时间:2013-11-08 13:40:17

标签: c loops while-loop structure

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

}

2 个答案:

答案 0 :(得分:1)

info.end在while(info.end!= -1)之前未初始化。初始化所有变量(studentID ...)和结构。

if(info.end = -1)是作业!

使用:if(info.end == -1)我更喜欢使用if(-1 == info.end)(如果你曾经使用过:only =而不是==你会得到一个错误)。 (尤达把戏^^)

你必须使用一个struct数组来保存每个学生(因为你不断删除以前的学生信息)。

这是你的作业,我不会为你做的工作;)

答案 1 :(得分:0)

我会将大部分编码留给你,因为这是家庭作业,但这是你需要改变以使其发挥作用。

首先,如果你想存储多个学生,那么信息将需要是一个数组

static int MAX_STUDENTS = 50;
struct infoStruct info[MAX_STUDENTS];

然后您将每个学生扫描到结构的单独部分

scanf("%d %d %d %d %d %d", &info[students-1].studentID, &info[students-1].day, &info[students-1].month, &info[students-1].year, &info[students-1].phone, &info[students-1].end);

然后你需要确保正确检查结束条件(检查最新信息[x] .end)
在尝试添加更多内容之前,检查阵列中是否还有一些空间也是明智的。

完成这些操作后,您正确地存储学生。

至于搜索,你需要扫描id来搜索一个单独的int。 然后遍历数组(info [x])并根据搜索ID搜索每个元素的studentID。如果匹配,请将其打印出来。

修改
     它也值得考虑将电话号码存储为“字符串”而不是int,很多电话号码以“0”开头,但是int会删除0。 (所以电话号码012345,将成为,12345)