수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

명함관련 프로그램 평가좀 부탁드립니다...

두힘

2024.11.07


질문 제목 : 소스평가좀 부탁드립니다.질문 요약 :명함관련프로그램 작성해봤습니다.. 아직 많이부족합니다..평가좀부탁드립니다#include stdio.h#include stdlib.h#include string.h#include malloc.h
#define name_size 20#definecomp_size 30#define tel_size 40

typedef struct _card{ char name[name_size]; char comp[comp_size]; char tel[tel_size]; struct _card *next;}card;
void init_list(void);void input_information(void);void print_all_namecard(void);void search(char *string);void delete(char *string);void save_namecard(void);int view_menu(void);char *search_option(void);char *delete_option(void);
card *head,*tail;int *searchoption;void main(){ char *buf; int status; init_list();
while( (status = view_menu()) != 6) { switch(status) { case 1: input_information(); break; case 2: print_all_namecard(); break; case 3: buf = search_option(); search(buf); break; case 4: buf = delete_option(); delete(buf); break; case 5: save_namecard(); break; } } puts(\nprogram end.....\n);}
void init_list(void){ head = (card *)malloc(sizeof(card)); tail = (card *)malloc(sizeof(card)); head -next = tail; tail -next = tail;}
void input_information(void){ int status = 1; card *value; value = (card *)malloc(sizeof(card)); puts(\n--- input namecard menu ---); while(status) { printf(input name - ); gets(value -name); if( strlen(value -name) = name_size ) { puts(\ninput name error!!\nplease retry input\n); continue; }
printf(input companyname - ); gets(value -comp); if( strlen(value -comp) = comp_size ) { puts(\ninput name error!!\nplease retry input\n); continue; }
printf(input telephone number - ); gets(value -tel); if( strlen(value -tel) = tel_size ) { puts(\ninput name error!!\nplease retry input\n); continue; } puts(\ninput information complete!!\n); status = 0; } value -next = head -next; head -next = value;}
int view_menu(void){ char input[50]; while(1) { printf(\n--- please select menu ---\n); printf(1. input information\n); printf(2. view all-namecard\n); printf(3. search namecard\n); printf(4. delete namecard\n); printf(5. save namecard from .txt file\n); printf(6. program exit\n\n); printf(please input select menu - ); gets(input); if(atoi(input) == 0) { printf(\nselect menu error!!\nplease retry select menu\n); continue; } else return atoi(input); }}
void print_all_namecard(void){ card *namecard; namecard = head -next;
printf(\n----name------------companyname------------telephonenumber----\n); while(namecard != tail) { printf( %-10s %-23s%-20s\n,namecard -name,namecard-comp,namecard-tel); namecard = namecard -next; }}
char *search_option(void){ char input[50]; char *search; static int buf; search = (char *)malloc(sizeof(search)); while(1) { printf(\n--- please select search menu ---\n); printf(1. name\n); printf(2. company name\n); printf(3. telephine numer\n); printf(please input select search menu - ); gets(input);
if( atoi(input) == 0 || atoi(input) 3) { printf(\nselect search menu error!!\nplease retry select menu\n\n); continue; } else break; } buf = atoi(input); searchoption = &buf;
switch( atoi(input) ) { case 1: printf(please input search name - ); gets(search); break; case 2: printf(please input search company name - ); gets(search); break; case 3: printf(please input search telephone number - ); gets(search); break; } return search;}
void search(char *string){ char yn[10]; card *list; list = head -next; while(list != tail) { if(*searchoption == 1 && strcmp(string,list-name) == 0) break; else if(*searchoption == 2 && strcmp(string,list-comp) == 0) break; else if(*searchoption == 3 && strcmp(string,list-tel) == 0) break; list = list -next; } if(list != tail) { printf(\nsearch successful!!!\n); printf(view namecard information (yes or no) ?? - ); gets(yn); if( strcmp(yn,yes) == 0 || strcmp(yn,yes) == 0) { printf(namecard information ↓↓↓); printf(\n----name------------companyname------------telephonenumber----\n); printf( %-10s %-23s%-20s\n,list -name,list-comp,list-tel); printf(--------------------------------------------------------------\n); } } else printf(\nsearch failure...\n);}
char *delete_option(void){ char input[50]; char *search; static int buf; search = (char *)malloc(sizeof(search)); while(1) { printf(\n--- please select delete menu ---\n); printf(1. name\n); printf(2. company name\n); printf(3. telephine numer\n); printf(please input select delete menu - ); gets(input);
if( atoi(input) == 0 || atoi(input) 3) { printf(\nselect search menu error!!\nplease retry select menu\n\n); continue; } else break; } buf = atoi(input); searchoption = &buf;
switch( atoi(input) ) { case 1: printf(please input delete name - ); gets(sngets(search); break; case 2: printf(please input delete company name - ); gets(search); break; case 3: printf(please input delete telephone number - ); gets(search); break; } return search;}
void delete(char *string){ card *list; card *front; front = head; list = front -next; while(list != tail) { if(*searchoption == 1 && strcmp(string,list-name) == 0) break; else if(*searchoption == 2 && strcmp(string,list-comp) == 0) break; else if(*searchoption == 3 && strcmp(string,list-tel) == 0) break; front = front -next; list = front -next; } if(list != tail) { front -next = list -next; free(list); puts(\ndelete namecard complete!!\n); } else printf(\nsearch failure...\n);
}
void save_namecard(void){ file *fp = fopen(namecard.txt,wt); card *list; list = head -next; fprintf(fp,\n----name------------companyname------------telephonenumber----\n); while(list != tail) { fprintf(fp, %-10s %-23s%-20s\n,list -name,list-comp,list-tel); list = list -next; } printf(save namecard from .txt file complete!!!\n); printf(.txt file address : c:\\documents and settings\\administrator\\바탕 화면\\c언어연습\\namenamecard\n);}
아직많이 부족하고모자란상태이지만 한번짜봤습니다..보시고 평가좀해주시고 부족한점있으면 충고좀부탁드립니다

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 에녹 2024-11-07

    감사합니다 !^^ 참고하도록하겠습니다

  • AngelsTears 2024-11-07

    프로그램 실행면에서 생각하지 못한 부분이 조금 있습니다. (사용자 측면)
    1. Input name을 입력하는데 숫자로 이름을 가진 사람은 없으니 숫자 입력 시 다시 입력하라는 문구가 필요할 것 같습니다. 핸드폰 번호도 마찬가지 한글이나 영어를 가진 숫자는 없기 때문 (-)는 입력 받아야 함.
    2. 3번 검색 이 후, Suearch Successful!! 문구 출력 후에 View NameCard 문구로 넘어가면 yes로 할 지 no로 할지를 물어보는데,

  • 볼1매그녀 2024-11-07

    감사합니다^^

  • 아빠몬 2024-11-07

    그나마 비슷한게 fgets네요. 2번은 함수가 제대로 처리가 안되더라도 아무 지장없다! 라는 부분 이외의 모든 부분에서 예외처리를 해주셔야합니다. 심지어 중요한 파일이라면 단순히 읽고 쓰는데도 예외처리를 해주셔야해요. 예를하나만 꼽자면 linux system programming란 책에나온 예외처리 부분인데요..
    read함수는 fd에서 len바이트만큼 buf로 읽어들이는 함수입니다.. 정말 별거 아닌 함순데 예외 처리만 몇줄인지 참.. 저정도 까진 안하

  • 소1유물 2024-11-07

    문자열을입력받는 다른표준함수는 scanf와gets밖에몰라서그러데 말씀하신 다른함수중에 하나만 알려주시면 감사하겠습니다...ㅠ 2번째는 fopen이랑 동적할당받은 부분들을 말씀하시는건가요?

  • 모드니 2024-11-07

    gets의경우 취약점때문에 다른표준 함수를 사용하시는걸 권장합니다.
    두번째는 요세 추세가 방어적 프로그래밍이라 함수호출 이후 원하는결과가 아니라면 그에 맞는 처리를 해줘야합니다. 예를 들면 fopen 이후 fp가 NULL값인지 확인후 처리를 하는거죠.

  • 치에미 2024-11-07

    말씀해주신 2가지 어떤식으로 개선해야할가요.. 말씀좀해주세요

  • 말근 2024-11-07

    그냥 쭉 내려봤을때 아쉬운점 두가지. 1.gets의 사용. 2.에러처리가 없네요..

번호 제 목 글쓴이 날짜
2700426 인터넷 창 띄우는 질문이요 (1) 정훈 2025-07-04
2700400 원넓이를 계산이요 ㅜㅜ 천칭자리 2025-07-04
2700368 if에 관해서 질문이요... Orange 2025-07-04
2700339 이거 결과값이 왜이런건지.. (4) 그댸와나 2025-07-04
2700313 파일 읽어서 저장하는데 빈파일일 경우 문재가 발생하네요.. (2) 크나 2025-07-03
2700287 구조체 동적할당 연습을 하는데 오류가 뜹니다...(해결) (3) 아련나래 2025-07-03
2700264 문자와 숫자 동시에 입력??? 글고운 2025-07-03
2700236 txt파일로만 쓰고 읽게 하려면 어떻게 해야 하나요..?? (8) 미국녀 2025-07-03
2700211 전위 연산자 (2) 어른처럼 2025-07-02
2700183 C에서 파일이름을 받고, 그 파일의 사이즈를 출력해줘야하는데 내용이 출력이 안되네요 ;ㅅ; 피스케스 2025-07-02
2700150 꼭좀 도와주세요ㅠㅠㅠ 호습다 2025-07-02
2700095 연산문제...질문... 오빤테앵겨 2025-07-01
2700070 while문 , 3의배수 출력하는 프로그램좀 짜주세욤. 횃불 2025-07-01
2700041 초보인데요 ㅎ 배열안에 배열을 집어넣을수 있나요?? 헛장사 2025-07-01
2700012 배열// (1) 전갈자리 2025-07-01
2699895 무한루프에 빠집니다.!! 해결좀부탁드려요 (10) 선아 2025-06-30
2699842 질문을 너무 많이 하네여.....죄송.... (2) 해님꽃 2025-06-29
2699816 오류 질문입니다.. (1) 해비치 2025-06-29
2699763 질문입니다 ! 꼭 좀 도와주세요ㅠㅠ (2) 미라 2025-06-28
2699555 c언어 다항식을 입력을 했는데 왜 출력이 안될까요? 피스케스 2025-06-27
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com