100명 주소록 소스인데, 여기에 메뉴로 입력한 주소록을 삭제하는 메뉴를 넣고 싶습니다.
아빠몬
질문 제목 : 100명 주소록 소스인데, 여기에 메뉴로 입력한 주소록을 삭제하는 메뉴를 넣고 싶습니다소스를 짰는데 스위치문에 입력한 주소록을 삭제하는 기능을 더 넣고 싶습니다.질문 내용 : 소스를 짰는데 스위치문에 입력한 주소록을 삭제하는 기능을 더 넣고 싶습니다.
#include stdio.h
#include string.h
?xml:namespace prefix = o ns = urn:schemas-microsoft-com:office:office /
struct phonebook {
char name[10];
char phonenumber[20];
char email[30];
};//구조체로 안에는 변수는 각각 이름(10byte),전화번호(20byte),이메일(30byte)
struct phonebook phonelist[100];//구조체를 담을 변수(100byte)
int usernumber = 0;//주소록에 담을 사용자수(전역변수)
int loadfile()
{
/*
이미 파일에 저장된 사용자 정보가 있다면 이를 구조체 배열에 읽어 온다.
*/
file *ifp;
int res;
int i = 0;//지역변수
ifp = fopen(c:\\address.txt, r); // 주소록 파일을 읽기 모드로 연다
if(ifp == null) {
printf(file not found\n);
return 0;
}
while(1) {
// 위에서 연 address.txt에서 문자열 3개를 읽어서 my_phone의 각 요소(name, phone_num, e_mail에 저장한다
res = fscanf(ifp, %s %s %s , phonelist[i].name, phonelist[i].phonenumber, phonelist[i].email);
if(res == eof) // fscanf()의 결과가 eof란 것은 address.txt 파일의 끝까지 읽었다는 말임.
break;
i++; // 구조체 배열의 인덱스값 증가
}
usernumber = i; // 현재 저장되어 있는 사용자 수
fclose(ifp); // address.txt 파일을 닫는다.
return 1;
}
void scaninfo()
{
file *ofp;
int res;//지역변수
ofp = fopen(c:\\address.txt, a); // 주소록 파일을 연다. 새로 입력받은 값을 저장해야 하기 때문에 append mode(a)로 연다.
while(1) {
printf(이름을 입력하세요(종료는 q) : );
scanf(%s, phonelist[usernumber].name);
// 종료 조건
if(!strcmp(phonelist[usernumber].name, q) || !strcmp(phonelist[usernumber].name, q)) {
fclose(ofp); // address.txt 파일을 닫는다.
return; // normal
}
printf(전화번호를 입력하세요 : );
scanf(%s, phonelist[usernumber].phonenumber);
printf(e-mail을 입력하세요 : );
scanf(%s, phonelist[usernumber].email);
// 현재 my_phone[usr_no]에는 이름, 전화, 이메일이 저장되어 있는데,
// 이를 아래의 fprintf()를 사용하여 address.txt 파일에 저장한다.
fprintf(ofp, %10s %20s %30s\n, phonelist[usernumber].name, phonelist[usernumber].phonenumber, phonelist[usernumber].email);
usernumber++; //종료 할때까지 사용자수를 받는다.
if(usernumber = 100) { // 100명이 꽉 찬 경우
printf(100명의 전화번호가 이미 등록되어 있습니다.);
fclose(ofp); // address.txt 파일을 닫는다.
return ; // full
}
}
}
void printuser(int i)
{
printf([%3d] %10s %20s %30s\n, i, phonelist[i].name, phonelist[i].phonenumber, phonelist[i].email);
}//입력 받은 사용자수의 번호,이름,전화번호,이메일 출력
void printinfo()
{
int index;
for(index = 0 ; index usernumber ; index++)
printuser(index);
}//모든 사용자수의 이름,전화번호,이메일 출력
void findphonenumber()
{
int i;
char target[20];
printf(찾으실 전화번호를 입력하세요 : );
scanf(%s, target);
for(i = 0 ; i usernumber ; i++) {
if(!strcmp(phonelist[i].phonenumber, target))
printuser(i);
}
}//전화번호를 입력하여 이 전화번호를 가진 사용자 찾기
void findname()
{
int i;
char target[10];
printf(찾으실 이름을 입력하세요 : );
scanf(%s, target);
for(i = 0 ; i usernumber ; i++) {
if(!strcmp(phonelist[i].name, target))target))
printuser(i);
}
}//이름을 입력하여 이 이름을 가진 사용자 찾기
void findemail()
{
int i;
char target[30];
printf(찾으실 이메일을 입력하세요 : );
scanf(%s, target);
for(i = 0 ; i usernumber ; i++) {
if(!strcmp(phonelist[i].email, target))
printuser(i);
}
}//이메일을 입력하여 이 이메일을 가진 사용자 찾기
int main()
{
int i;
loadfile();//파일함수 불러오기.
printf(*****100명 주소록*****\n);
while(1) {
printf(아래 메뉴를 선택하세요. : \n);
printf(1. 등록 2. 이름 검색 3. 전화번호 검색 4. 이메일 검색 \n5. 전체 사용자 출력 6. 종료\n);
scanf(%d, &i);
switch(i) {
case 1 :
scaninfo();
break;
case 2 :
findname();
break;
case 3 :
findphonenumber();
break;
case 4 :
findemail();
break;
case 5 :
printinfo();
break;
case 6 :
printf(저희 전화번호부를 사용 해주셔서 감사합니다.\n);
return;
}
}
}
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692510 | 함수형 중에서.. (6) | 한란 | 2025-04-23 |
2692483 | C언어 함수, Header | 떠나간그놈 | 2025-04-23 |
2692451 | 이 문제좀 풀어주세요 ^^ | 게자리 | 2025-04-23 |
2692424 | 2차원배열 자료입력질문이요! (1) | 똘끼 | 2025-04-22 |
2692401 | 유닉스안에서 C언어를 이용한 명함 만들기 입니다; 이해안가는 부분이있네요 | 2gether | 2025-04-22 |
2692374 | 고수님들 댓글 마니부탁해요!!! (2) | 엄지 | 2025-04-22 |
2692343 | scnaf에 자꾸 선언을 참조하라는데;; (8) | 도래 | 2025-04-22 |
2692282 | 도스상에서 생성된 exe파일에 press~ 뜨게 하기 (4) | 회사원 | 2025-04-21 |
2692256 | scanf("%*c"); ㅠㅠ 고수님들 | 거북이 | 2025-04-21 |
2692230 | 하노이탑 질문입니다. (1) | 미쁘다 | 2025-04-21 |
2692210 | 정보 올림피아드 문제인데.. 풀이 과정이 궁금합니다.(재귀함수) (5) | 물티슈 | 2025-04-20 |
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |