#include
#include
void PrintMenu();//메뉴
void InsertDB();//등록
void SearchDB();//검색
void PrintDB();//출력
void DeleteDB();//종료
int find(char n[]);//문자열 검색 함수
int in;
#define DB_SIZE 100
#define NAME_LEN 20
#define TEL_LEN 20
#define ADDR_LEN 30
char name[DB_SIZE][NAME_LEN];
char phone[DB_SIZE][TEL_LEN];
char address[DB_SIZE][ADDR_LEN];
int main()
{
PrintMenu();//메뉴
return 0;
}
void PrintMenu()
{
int n;
while (1)//무한반복
{
printf("---------Menu--------\n");
printf(" 1. 등록 \n");
printf(" 2. 삭제 \n");
printf(" 3. 검색 \n");
printf(" 4. 출력 \n");
printf(" 5. 종료 \n");
printf("---------------------\n");
printf("Choose the item : ");
scanf("%d", &n);
printf("\n");
getchar();
if (1 <= n && n <= 5)
{
switch (n)
{
case 1:
InsertDB();//등록
break;
case 2:
DeleteDB();//삭제
break;
case 3:
SearchDB();//검색
break;
case 4:
PrintDB();//출력
break;
case 5:
return;//종료
break;
}
}
else
{
getchar();
printf("다시 입력하세요[1-5]\n");
}
}
}
void DeleteDB()
{
char n[DB_SIZE][NAME_LEN], r;
int i;
printf("[ Remove ]\n");
printf("Input Name for Removing : ");
scanf("%s", n);
r = find(n);
if (-1 == r)
{
printf("No Data Found\n\n");
return;
}
for (i = r; i < in - 1; i++)
{
strcpy(name[i], name[i + 1]);
strcpy(phone[i], phone[i + 1]);
}
in--;
printf("-------> Complete deleting the phone data......\n\n");
}
void SearchDB()
{
char n[DB_SIZE][NAME_LEN], r;
printf("[ Search ]\n");
printf("Input Name for Searching : ");
scanf("%s", n);
r = find(n);
if (-1 == r)
{
printf("No Data Found.\n\n");
return;
}
printf("---> Name : %-20s / Tel : %-20s / Address : %s \n", name[r], phone[r], address[r]);
printf ("\n");
}
int find(char n[])
{
int f;
for (f = 1; f <= DB_SIZE; f++)
{
if (!strcmp(name[f], n))
{
return f;
}
}
return -1;
}
전화번호부 코드인데
등록을
배열 1 홍길동
배열 2 김철수
배열 3 박수철
이렇게 해놓았을때
홍길동이나 김철수를 삭제하면 박수철이가 삭제가 된다
ㅅㅂ 뭐가 잘못됬냐
#include
void PrintMenu();//메뉴
void InsertDB();//등록
void SearchDB();//검색
void PrintDB();//출력
void DeleteDB();//종료
int find(char n[]);//문자열 검색 함수
int in;
#define DB_SIZE 100
#define NAME_LEN 20
#define TEL_LEN 20
#define ADDR_LEN 30
char name[DB_SIZE][NAME_LEN];
char phone[DB_SIZE][TEL_LEN];
char address[DB_SIZE][ADDR_LEN];
int main()
{
PrintMenu();//메뉴
return 0;
}
void PrintMenu()
{
int n;
while (1)//무한반복
{
printf("---------Menu--------\n");
printf(" 1. 등록 \n");
printf(" 2. 삭제 \n");
printf(" 3. 검색 \n");
printf(" 4. 출력 \n");
printf(" 5. 종료 \n");
printf("---------------------\n");
printf("Choose the item : ");
scanf("%d", &n);
printf("\n");
getchar();
if (1 <= n && n <= 5)
{
switch (n)
{
case 1:
InsertDB();//등록
break;
case 2:
DeleteDB();//삭제
break;
case 3:
SearchDB();//검색
break;
case 4:
PrintDB();//출력
break;
case 5:
return;//종료
break;
}
}
else
{
getchar();
printf("다시 입력하세요[1-5]\n");
}
}
}
void DeleteDB()
{
char n[DB_SIZE][NAME_LEN], r;
int i;
printf("[ Remove ]\n");
printf("Input Name for Removing : ");
scanf("%s", n);
r = find(n);
if (-1 == r)
{
printf("No Data Found\n\n");
return;
}
for (i = r; i < in - 1; i++)
{
strcpy(name[i], name[i + 1]);
strcpy(phone[i], phone[i + 1]);
}
in--;
printf("-------> Complete deleting the phone data......\n\n");
}
void SearchDB()
{
char n[DB_SIZE][NAME_LEN], r;
printf("[ Search ]\n");
printf("Input Name for Searching : ");
scanf("%s", n);
r = find(n);
if (-1 == r)
{
printf("No Data Found.\n\n");
return;
}
printf("---> Name : %-20s / Tel : %-20s / Address : %s \n", name[r], phone[r], address[r]);
printf ("\n");
}
int find(char n[])
{
int f;
for (f = 1; f <= DB_SIZE; f++)
{
if (!strcmp(name[f], n))
{
return f;
}
}
return -1;
}
전화번호부 코드인데
등록을
배열 1 홍길동
배열 2 김철수
배열 3 박수철
이렇게 해놓았을때
홍길동이나 김철수를 삭제하면 박수철이가 삭제가 된다
ㅅㅂ 뭐가 잘못됬냐
미안한데 너 며칠째 이거하고있는거 아니냐..? 한줄씩 디버깅을 해봐 - dc App
과젠데 한단계씩하고있거덩
아 미안 몰랐다.. - dc App
코드 잣같이도 써놨네 포인터문제임 그거
포인터안쓴거 아니야?
아니시발 ㅋㅋㅋ 코드 짤렷잖아 ㅋㅋㅋㅋ
등록부분하고 전체출력은 걍짜름 문제없어서