#include
#include
void PrintMenu();//메뉴
void InsertDB();//등록
void SearchDB();//검색
void PrintDB();//출력
void DeleteDB();//종료
int in;//인덱스 선언
#define DB_SIZE 100
#define NAME_LEN 20
#define TEL_LEN 20
#define ADDR_LEN 70
struct List
{
char name[NAME_LEN];
char phone[TEL_LEN];
char address[ADDR_LEN];
}pb[DB_SIZE]; // 구조체를 bl로 정의
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("메뉴를 선택하세요[1-5] : ");
scanf("%d", &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 InsertDB()
{
char n[NAME_LEN], p[TEL_LEN], a[ADDR_LEN];
in++;
printf("이름 : ");
gets(n);
strcpy(pb[in].name, n);//입력된 이름을 저장
printf("전화번호 : ");
gets(p);
strcpy(pb[in].phone, p);//입력된 전화번호를 저장
printf("주소 : ");
gets(a);
strcpy(pb[in].address, a);//입력된 주소를 저장
}
void DeleteDB()
{
printf("삭제메뉴를 선택했습니다.\n");
}
void SearchDB()
{
printf("검색메뉴를 선택했습니다.\n");
}
void PrintDB()
{
int i;
if (in == 0)
{
printf("내용이 없습니다.\n");
return;
}
for (i = 1; i <= in; i++)
{
printf("이름 : %s / 전화번호 : %s / 주소 : %s \n", pb[i].name, pb[i].phone, pb[i].address);
}
}
코드 이모양인데
구조체안부분
char name[DB_SIZE][NAME_LEN];
char phone[DB_SIZE][TEL_LEN];
char address[DB_SIZE][ADDR_LEN];
이렇게하면서 2차원배열사용하는걸로 바꿀라면 어떻게해야되냐
#include
void PrintMenu();//메뉴
void InsertDB();//등록
void SearchDB();//검색
void PrintDB();//출력
void DeleteDB();//종료
int in;//인덱스 선언
#define DB_SIZE 100
#define NAME_LEN 20
#define TEL_LEN 20
#define ADDR_LEN 70
struct List
{
char name[NAME_LEN];
char phone[TEL_LEN];
char address[ADDR_LEN];
}pb[DB_SIZE]; // 구조체를 bl로 정의
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("메뉴를 선택하세요[1-5] : ");
scanf("%d", &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 InsertDB()
{
char n[NAME_LEN], p[TEL_LEN], a[ADDR_LEN];
in++;
printf("이름 : ");
gets(n);
strcpy(pb[in].name, n);//입력된 이름을 저장
printf("전화번호 : ");
gets(p);
strcpy(pb[in].phone, p);//입력된 전화번호를 저장
printf("주소 : ");
gets(a);
strcpy(pb[in].address, a);//입력된 주소를 저장
}
void DeleteDB()
{
printf("삭제메뉴를 선택했습니다.\n");
}
void SearchDB()
{
printf("검색메뉴를 선택했습니다.\n");
}
void PrintDB()
{
int i;
if (in == 0)
{
printf("내용이 없습니다.\n");
return;
}
for (i = 1; i <= in; i++)
{
printf("이름 : %s / 전화번호 : %s / 주소 : %s \n", pb[i].name, pb[i].phone, pb[i].address);
}
}
코드 이모양인데
구조체안부분
char name[DB_SIZE][NAME_LEN];
char phone[DB_SIZE][TEL_LEN];
char address[DB_SIZE][ADDR_LEN];
이렇게하면서 2차원배열사용하는걸로 바꿀라면 어떻게해야되냐
니 코드를 니가 알지
네다음지잡2년차백수
코드를 수정하면 되는 거 아님?
내코드를 내가 알다만은 어떻게 바꿔야 될질 모르니까 물어보지
구조체 내부랑 구조체 변수 선언이랑 함수에 구조체 변수 부분을 바꿔
1차원 배열을 2차원 배열으로 가능함 어차피 메모리 위에서는 일렬로 놓여 있는
??? 좀만 자세히 설명좀
1차원 배열로 만들고 name[DB_SIZE*NAME_LEN] 한 뒤에 쓸 때는 name[y*NAME_LEN+x]