#pragma
warning(disable:4996)
#include
#include
//strcmp
사용
#define
CAPACITY 100
//
최대 100명을
저장한다.
#define
BUFFER_SIZE 20
char*
names[CAPACITY]; // namses
//names와
numbers는 char*타입의
배열이다.
char*
numbers[CAPACITY]; //phone numbers
int n = 0;
//number of people in phone directory
void add();
void find();
void
status();
void
remove();
int main() {
char command[BUFFER_SIZE];
while (1) {
printf("$ ");
// 프롬프트에
출력을 한다.
scanf("%s", command);
// 입력을
받아 command라는 배열에 저장한다.
if (strcmp(command, "add") == 0)
// strcmp함수는
두 문자열이 동일하면 0을 반환한다.
add();
else if (strcmp(command, "find") == 0)
// find를
입력하면 find로
find();
else if (strcmp(command, "status") == 0)
status();
else if (strcmp(command, "delete") == 0)
remove();
else if (strcmp(command, "exit") == 0)
break;
//exit를
입력하면 while문을 빠져나간다.
}
return 0;
}
void add() {
char buf1[BUFFER_SIZE], buf2[BUFFER_SIZE];
scanf("%s", buf1);
// 이름
scanf("%s", buf2);
// 전화번호
names[n] = strdup(buf1);
// n 번째
칸은 저장된 사람 수
// 사람이름
저장
numbers[n] = strdup(buf2);
// n 번째
칸에 전화번호 저장
// strdup 는
새로운 곳에 복사하여 넣고 주소를 리턴한다.
// strcpy 새로운
변수에 넣어준다.
n++;
printf("%s was added successfully. \n", buf1);
}
void find()
{
char buf[BUFFER_SIZE];
scanf("%s", buf);
int i;
for (i = 0; i < n; i++) {
if (strcmp(buf, names[i]) == 0) {
printf("%s\n", numbers[i]);
return;
//원하는
사람 찾는경우 여기서 끝난다.
}
}
printf("No person named '%s' exists.\n", buf);
// for문을
다 돌아서도 없을경우 오게되는곳
}
void
status() {
int i;
for (i = 0; i < n; i++)
printf("%s %s\n", names[i], numbers[i]);
//전체를
포문으로 돌면서 출력함
printf("Total %d persons.\n", n);
// 총
몇명이 있다라고 출력해줌
}
void
remove() {
char buf[BUFFER_SIZE];
scanf("%s", buf);
// 사람
이름을 입력받는다.
int i;
for (i = 0; i < n; i++) {
// 전체
전화번호부에서 찾는다.
if (strcmp(buf, names[i]) == 0) {
// 삭제할
사람을 찾는 구문
names[i] = names[n - 1];
numbers[i] = numbers[n - 1];
// 맨
마지막 사람을 삭제된 자리로 옮긴다.
n--;
printf("'%s' was deleted successfully. \n", buf);
return;
}
}
printf("No person named '%s' exists.\n", buf);
}
댓글 없음:
댓글 쓰기