질문:
회원 관리 프로그램을 구현하는 중 검색기능을 구현하고 있는데 컴파일은 잘 되지만 실행해서 기능을 실행할시 디버깅 오류가 나서 질문을 드립니다.
답변:
//수정된 코드 'Student *stu' 변수를 전역으로 빼내기만 했어요^^
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Student{
char name[10];
int age;
char address[50];
int grade;
int student_number;
struct Student *nextStudent;
}Student;
Student *start = NULL;
Student *end = NULL;
Student *stu;
void insert()
{
/* Student *stu;*/ //<--이변수를 전역으로 : 인서트 함수와 서취함수에서 공유하기 위해
stu = (Student*) malloc(sizeof(Student));
printf("이름을 입력하세요 : ");
scanf("%s", (stu)->name);
printf("나이를 입력하세요 : ");
scanf("%d", &(stu)->age);
printf("주소을 입력하세요 : ");
scanf("%s", (stu)->address);
printf("학번을 입력하세요 : ");
scanf("%d", &(stu)->student_number);
printf("성적을 입력하세요 : ");
scanf("%d", &((stu)->grade));
if(start==NULL)
{
start = stu;
end = stu;
}
else{
end ->nextStudent=start;
end =stu;
}
printf("== 저장 된 내용입니다.==\n");
printf("이름 : %s\n", (stu)->name);
printf("나이 : %d\n", (stu)->age);
printf("주소 : %s\n", (stu)->address);
printf("학번 : %d\n", (stu)->student_number);
printf("학점 : %d\n", (stu)->grade);
}
void search()
{
//Student *stu ; // 이변수를 전역으로
char check[10];
int c;
int i;
printf("검색하실 이름을 입력해 주세요");
scanf("%s",check);
for(i=0 ; i < 5 ; i++){
if (strcmp(check, stu[i].name) ==0 ){
c =1;
printf("\t%s\t%d\t%s\t%d\t%d\n" , stu[i].name , stu[i].age , stu[i].address , stu[i].student_number ,stu[i].grade );
}
else {
printf("\t검색하지못하였습니다\n");
}
}
}
void modify()
{
}
int main()
{
char input[20];
system("cls"); //clear이 아니고 cls입니다.
printf("===========================\n");
printf("==학생 정보 관리 프로그램==\n");
printf("===========================\n");
while(1){
printf("CMD>");
scanf("%s", input);
if(!strcmp("insert", input))
{
insert();
}
else if(!strcmp("search", input))
{
search();}
else if(!strcmp("modify", input))
{
modify(); }
else if (!strcmp("exit", input))
{
printf("종료되었습니다");
exit(0);
}
else
{
printf("다시 입력을 해주십시오"); }
}
return 0;
}
댓글