게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
구조체배열 bsearch로 검색하는법좀 알려주세요
게시물ID : jisik_160488짧은주소 복사하기
작성자 : pprn
추천 : 0
조회수 : 2130회
댓글수 : 0개
등록시간 : 2013/10/18 19:29:34
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct student{
int id;
char name[20];
}Student;

//qsort 비교 함수
int compareStd(const void *a, const void *b) 
    struct student *pa = (struct student *)a; 
    struct student *pb = (struct student *)b; 

    return pa->id - pb->id; 
}

int compareStd2(const void *pKey, const void *pValue){
return (((student *)pKey)->id - ((student *)pValue)->id);

}

void main(){

int i,input;
struct student *std, *ptr;
std = (struct student *)malloc(sizeof(struct student)*10);
// 구조체 배열 초기화
std[0].id = 20084688;
strcpy(std[0].name, "조윤식");

std[1].id = 20072648;
strcpy(std[1].name, "서웅교");

std[2].id = 200914204;
strcpy(std[2].name, "김종근");

std[3].id = 200914545;
strcpy(std[3].name, "유대혁");

std[4].id = 201013372;
strcpy(std[4].name, "홍나연");

std[5].id = 201013192;
strcpy(std[5].name, "강한나");

std[6].id = 20084391;
strcpy(std[6].name, "박대서");

std[7].id = 20070302;
strcpy(std[7].name, "이주혁");

std[8].id = 20078071;
strcpy(std[8].name, "권영우");

std[9].id = 201010712;
strcpy(std[9].name, "허하연");
//배열 출력
for(i=0; i<10; i++){
printf("%d %s\n", std[i].id, std[i].name);
}

puts("----------qsort로 정렬------------");
qsort(std,10,sizeof(struct student), compareStd);
for(i=0; i<10; i++){
printf("%d %s\n", std[i].id, std[i].name);
}

puts("검색할 id를 입력하세요");
scanf("%d", &input);
ptr = (student *)bsearch(&input,std,sizeof(struct student), compareStd2);

if(ptr == NULL)
puts("데이터를 찾지 못했습니다.");
else
printf("%s\n", );

free(std);
}









짧은 지식으로 프로그래밍하려니 너무 어렵네요.
compareStd2 를 잘못 짠것 같습니다.. 어떻게 수정해야하나요?..ㅠ
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호