반응형
이름을 검색하여 해당하는 연락처 출력하기 (구조체)
#include<stdio.h>
#include<string.h> // strcmp()
#define STR_SIZE 20
typedef struct book{
char name[STR_SIZE];
char phone[STR_SIZE];
int ringtone;
} PhoneBook; // 구조체 struct book을 phoneBook으로 선언한다.
int main(){
PhoneBook pb[] = { // 구조체의 변수 pb[]를 생성하고, 초기화 해준다.
{"홍길동", "010-1111-1111", 1},
{"장보고", "010-2222-2222", 2},
{"김유신", "010-3333-3333", 3},
{"이순신", "010-4444-4444", 4},
{"유관순", "010-5555-5555", 5}
};
PhoneBook *p = NULL; // 구조체의 포인터 변수 p를 생성한다. 현재 아무 주소도 가리키지 않고 있다.
int size = sizeof(pb) / sizeof(pb[0]); // 구조체의 변수 pb[]에 대한 index 개수를 구한다.
char name[STR_SIZE]; // 입력받을 이름을 저장할 변수이다.
printf("검색할 이름을 입력하세요.\n");
printf("이름 : ");
scanf("%s", name);
for(int i = 0; i < size; ++i){ // pb[] 배열을 size(index의 개수) 만큼 반복하며 찾는다.
if(strcmp(name, pb[i].name) == 0){ // name과 pb[i].name의 문자열이 같으면 0을 반환한다.
p = &pb[i]; // 그리고 name과 pb[i].name이 같으면 구조체의 포인터 변수 *p에 해당하는 pb[] index의 주소값을 저장한다.
break; // 검색할 이름을 찾았기 때문에 for문을 빠져 나온다.
}
}
if(p == NULL) // 구조체의 변수 *p에 여전히 아무값도 저장되지 않았다면,
printf("입력한 이름의 정보가 존재하지 않습니다.\n"); // 구조체 pb[].name에 저장되지 않은 이름이다.
else
printf("%s의 연락처 : %s\n", p->name, p->phone); // 구조체의 포인터 변수는 '->'를 이용하여 멤버변수에 접근한다.
return 0;
}
반응형
'C' 카테고리의 다른 글
[C언어] 실습: 좌표값(x, y) 출력하기 (0) | 2021.05.24 |
---|---|
[C언어] 실습: 입력받은 숫자가 배열에 저장되어 있는지 확인하기 (0) | 2021.05.23 |
[C언어] 실습: 구조체 'student'로 3명의 총점 및 평균을 계산하는 성적 처리 프로그램 구현하기 (0) | 2021.05.21 |
[C언어] 구조체 객체 복사 (0) | 2021.05.20 |
[C언어] 실습: 구조체 'car'로 자동차, 속도, 연료 상태 출력하기 (0) | 2021.05.19 |