#include <stdio.h>
#include <stdlib.h>
#define SIZE 100
struct person { //이름과 번호 구조체
char name[15];
char pnumber[15];
char blank[10];
}data[SIZE]; // 구조체 배열 선언
int i=-1; //배열의 인덱스 값
void insert(void); // 입력 함수
void del(void); // 삭제 함수
void list(void); // 목록 함수
void search(void); // 검색 함수
FILE *fp;
int main(void)
{
//fp = fopen("numberlist.txt", "a+t ");
//fclose(fp);
char n = 0;
while (1) //메뉴를 선택할 때까지 무한히 반복
{
printf("-------------전화번호부----------\n");
printf(" 1.입력\n");
printf(" 2.삭제\n");
printf(" 3,목록\n");
printf(" 4.검색\n");
printf(" 5.종료\n");
printf("----------------------------------\n");
scanf("%d", &n); // 메뉴 번호 사용자로부터 입력받음
switch (n)
{
case 1:
insert();
break;
case 2:
del();
break;
case 3:
list();
break;
case 4:
search();
break;
case 5:
exit(1);
return 0;
default:
printf("잘못 입력하였습니다.\n");
break;
}
}
}
void insert(void) //입력 함수 생성
{
char n[15], pn[15]; //이름과 번호를 저장하는 배열
while (1)
{
i++;
printf("이름을 입력하세요. (종료시 0 입력) \n");
scanf("%s", n);
if (n[0] == '0')
return;
strcpy(data[i].name, n);
printf("전화번호를 입력하세요. \n");
scanf("%s", pn);
strcpy(data[i].pnumber, pn);
fp = fopen("numberlist.txt", "a+t");
fprintf(fp, "이름 :%s 전화번호 :%s\n", data[i].name, data[i].pnumber);
fclose(fp);
}
}
void del(void) //삭제 함수 생성
{
int result,select=0;
char n[15], pn[15];
printf("이름으로 검색(1) 전화번호로 검색(2)");
switch (select)
{
case 1:
printf("삭제할 이름을 입력하세요. \n");
scanf("%s", n);
for (int s = 0; s < SIZE; s++){
result = strcmp(data[s].name, n);
if (result == 0) {
strcpy(data[s].name, data[s + 1].name);
strcpy(data[s].pnumber, data[s + 1].pnumber);
strcpy(data[s + 1].name, "");
strcpy(data[s + 1].pnumber, "");
printf("삭제가 되었습니다.\n");
i--;
break;
}
}
case 2:
printf("삭제할 전화번호를 입력하세요. \n");
scanf("%s", pn);
for (int s = 0; s < SIZE; s++){
result = strcmp(data[s].pnumber, n);
if (result == 0) {
strcpy(data[s].name, data[s + 1].name);
strcpy(data[s].pnumber, data[s + 1].pnumber);
strcpy(data[s + 1].name, "");
strcpy(data[s + 1].pnumber, "");
printf("삭제가 되었습니다.\n");
i--;
break;
}
}
}
if (result != 0)
printf("없는 이름입니다.\n");
return;
}
void list(void)
{
fopen("numberlist.txt", "r");
if (i == -1){
printf("저장된 번호가 없습니다.\n");
return;
}
for (int j = 0; j <i; j++) {
fscanf(fp, "이름 :%s 전화번호 :%s \n", &data[j].name, &data[j].pnumber);
fclose(fp);
}
for (int j = 0; j < i; j++) {
printf("이름 :%s 전화번호 :%s \n", data[j].name, data[j].pnumber);
}
fclose(fp);
}
void search(void)
{
int result;
char n[15];
printf("검색할 이름을 입력하시오. \n");
scanf("%s", n);
for (int s = 0; s <=i; s++){
if (strstr(data[s].name, n) != NULL){
printf("이름:%s전화번호:%s \n", data[s].name, data[s].pnumber);
if (strstr(data[s].name, n) == NULL)
printf("찾을 수 없습니다.");
}
}
}
함볼게요
일주일째에요 제발 도와주세요 ㅜㅜㅜ
잉 파일불러와지는데요
왜대답이없노
저장된 파일 목록 누르면 불러와 진다고요?
처음에 실행해서 주르륵 입력하고 종료하고
목록 선택했을때 저장됬던 파일들이 불러와지는 것을 원하는거임
네 걍 실행하면 바로됨
아 첨부터 4번임??
네 한번 저장하고 종료후에 다시 실행후에 바로 4번 하면 나오는것을 원하는거에요
입력->목록 하면 저장했던거 다뜸
해볼게여
그건 원래 되구요 저는 바로 목록했을때 나오는걸 하고싶어서그런거에요
문제가 저장을 했을때는 예를 들어 i가 5였으면 종료후에 저장은 6개가 텍스트 파일에 저장되있지만 다시 실행하면 i가 0이기 때문에 목록이 안나오는 것 같은데 어떻게 해결해야할까요
void list(void){ fopen("numberlist.txt", "r"); int i = 0; while (!feof(fp)){ fscanf(fp, "이름 :%s 전화번호 :%s \n", &data;[i].name, &data;[i].pnumber); i++; } for (int j = 0; j < i; j++) { printf("이름 :%s 전화번호 :%s \n", data[j].name, data[j].pnumber); } fclose(fp);}
일케바꾸면 되네욧!
data; 이건 뭐에요??
이게 오류가 나는데
&data;[i].name, &data;[i].pnumber 여기 ; 세미콜론 오류가나는데
웹에다가 복사하면 저리됨 세미콜론없애세요
그냥 종료 하지않고 입력한거 띄우는 목록 자체도 안되버리는데요?;;\
잠시만여 입력은확인안해봐서;;
전 입력->목록이나 바로 목록 둘다 다 잘나오는데;;
그냥 생으로 목록 띄우는것도 안되요 전 님이 하신걸로 해봤는데
팀뷰어같은거있으셈??
생으로 목록띄우면 오류메시지 나면서 콘솔창 닫아져요
아니요 없어요 ;;
캑 카톡아디가..?
j112033 이거요
팀뷰어가 더 괜찮으며 ㄴ깔게요