수다닷컴

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

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

볼수록매력

2023.04.01


질문 제목 : 소스평가좀 부탁드립니다.질문 요약 :명함관련프로그램 작성해봤습니다.. 아직 많이부족합니다..평가좀부탁드립니다#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

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

  • 나샘

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

  • 노을

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

  • 샹1큼해

    감사합니다^^

  • 미쁘다

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

  • 맛깔손

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

  • 하양이

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

  • 카제

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

  • 잇힝

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

번호 제 목 글쓴이 날짜
2699816 오류 질문입니다.. (1) 해비치 2025-06-29
2699763 질문입니다 ! 꼭 좀 도와주세요ㅠㅠ (2) 미라 2025-06-28
2699555 c언어 다항식을 입력을 했는데 왜 출력이 안될까요? 피스케스 2025-06-27
2699528 C언어 포인터연산 질문입니다. (3) 안녕나야 2025-06-26
2699476 끌어올림;;달력 짜봤는데요 이 소스 줄일 수 있나요? - 스샷첨부 (2) 클라우드 2025-06-26
2699444 [좀 급함] system("explorer [주소] ") 문에 변수를 사용할 수 있나요? 알 2025-06-26
2699415 파일//read//와 배열 아란 2025-06-25
2699386 구조체 안에 일부분만 char 배열에 복사하려면 어떻게 해야하나요? (1) 미즈 2025-06-25
2699361 연결리스트 정렬하는 부분에 대해서 질문 드립니다 아이처럼 2025-06-25
2699304 [기초]아직 안주무시는분 계신가요..?포인터배열? 좀 도와주세요. 놀리기 2025-06-24
2699272 printf() 함수이용해서 프로그램 만들기 질문요! (5) 다가 2025-06-24
2699221 PUSH와 POP코드를 더 간단하게 어떻게 해야할까요? 파라미 2025-06-24
2699192 설치오류가 자꾸 나요 한번봐주세여~ (1) 소녀틳향기 2025-06-23
2699161 for loop안에 있는 if문 (9) Orange 2025-06-23
2699105 링크더리스트 이전 링크값 출력함수. 꼬꼬마 2025-06-23
2699078 정수를 한자리씩 배열에 담는 법은 어떻게 하나요.. (4) 귀염포텐 2025-06-22
2699024 C언어 공부하려는데 도와주세요!!! (2) 달님 2025-06-22
2698994 날짜 계산하는 C 코드 짜고 있는데 꽉 막혀서 질문드립니다.. (6) 별 2025-06-22
2698967 파일삭제 윈도우 폴더까지 접근하게하는 함수가 뭔가요 (2) 샤인 2025-06-21
2698938 c언어 메모리질문 (3) 나래 2025-06-21
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

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