C언어 주소록 관리 프로그램입니다.

lfs의 이미지

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
 
#define SIZE 1
 
struct address{
	int bunho;
	char sido[15];
	char gungu[11];
	char eupdongmyun[11];
	char gil[11];
	char ho[7];
	char name[11];
}Address[SIZE];
 
int menu(void)
{
	printf("┌────────┐\n");
	printf("│   1.주소 입력  │\n");
	printf("│   2.주소 출력  │\n");
	printf("│   3.주소 수정  │\n");
	printf("│   4.주소 삭제  │\n");
	printf("│   5.주소 검색  │\n");
	printf("│   6.도 움  말  │\n");
	printf("│   7.종     료  │\n");
	printf("└────────┘\n");
 
	return 0;
}
 
 
int menu1(void)
{
	printf("┌────────┐\n");
	printf("│ ★1.주소 입력★│\n");
	printf("│   2.주소 출력  │\n");
	printf("│   3.주소 수정  │\n");
	printf("│   4.주소 삭제  │\n");
	printf("│   5.주소 검색  │\n");
	printf("│   6.도 움  말  │\n");
	printf("│   7.종     료  │\n");
	printf("└────────┘\n");
 
	return 0;
}
 
int menu2(void)
{
	printf("┌────────┐\n");
	printf("│   1.주소 입력  │\n");
	printf("│ ★2.주소 출력★│\n");
	printf("│   3.주소 수정  │\n");
	printf("│   4.주소 삭제  │\n");
	printf("│   5.주소 검색  │\n");
	printf("│   6.도 움  말  │\n");
	printf("│   7.종     료  │\n");
	printf("└────────┘\n");
 
	return 0;
}
 
int menu3(void)
{
	printf("┌────────┐\n");
	printf("│   1.주소 입력  │\n");
	printf("│   2.주소 출력  │\n");
	printf("│ ★3.주소 수정★│\n");
	printf("│   4.주소 삭제  │\n");
	printf("│   5.주소 검색  │\n");
	printf("│   6.도 움  말  │\n");
	printf("│   7.종     료  │\n");
	printf("└────────┘\n");
 
	return 0;
}
 
int menu4(void)
{
	printf("┌────────┐\n");
	printf("│   1.주소 입력  │\n");
	printf("│   2.주소 출력  │\n");
	printf("│   3.주소 수정  │\n");
	printf("│ ★4.주소 삭제★│\n");
	printf("│   5.주소 검색  │\n");
	printf("│   6.도 움  말  │\n");
	printf("│   7.종     료  │\n");
	printf("└────────┘\n");
 
	return 0;
}
 
int menu5(void)
{
	printf("┌────────┐\n");
	printf("│   1.주소 입력  │\n");
	printf("│   2.주소 출력  │\n");
	printf("│   3.주소 수정  │\n");
	printf("│   4.주소 삭제  │\n");
	printf("│ ★5.주소 검색★│\n");
	printf("│   6.도 움  말  │\n");
	printf("│   7.종     료  │\n");
	printf("└────────┘\n");
 
	return 0;
}
 
int menu6(void)
{
	printf("┌────────┐\n");
	printf("│   1.주소 입력  │\n");
	printf("│   2.주소 출력  │\n");
	printf("│   3.주소 수정  │\n");
	printf("│   4.주소 삭제  │\n");
	printf("│   5.주소 검색  │\n");
	printf("│ ★6.도 움  말★│\n");
	printf("│   7.종     료  │\n");
	printf("└────────┘\n");
 
	return 0;
}
 
int menu7(void)
{
	printf("┌────────┐\n");
	printf("│   1.주소 입력  │\n");
	printf("│   2.주소 출력  │\n");
	printf("│   3.주소 수정  │\n");
	printf("│   4.주소 삭제  │\n");
	printf("│   5.주소 검색  │\n");
	printf("│   6.도 움  말  │\n");
	printf("│ ★7.종     료★│\n");
	printf("└────────┘\n");
 
	return 0;
}
 
int initial(void)
{
	int i;
 
	for(i=0;i<SIZE;i++){
		Address[i].bunho=0;
		Address[i].sido[0]='\0';
		Address[i].gungu[0]='\0';
		Address[i].eupdongmyun[0]='\0';
		Address[i].gil[0]='\0';
		Address[i].ho[0]='\0';
		Address[i].name[0]='\0';
	}
 
	return 0;
}
 
int input(void)
{
	int i;
	int count=0;
 
	char sido_in[14]="\0";
	char gungu_in[10]="\0";
	char eupdongmyun_in[10]="\0";
	char gil_in[10]="\0";
	char ho_in[6]="\0";
	char name_in[10]="\0";
 
	printf("==★ 입 력 ★==\n");
 
	for(i=0;i<SIZE;i++){
		if(Address[i].bunho==1)
			count++;
	}
	if(count==SIZE){
		printf("주소  입력이 제한 되었습니다.\n");
		return 0;
	}
	printf("시-도 입력:>>");
	gets(sido_in);
 
	if(strcmp(sido_in,"\0")==0){
		printf("빈 단어가  입력되었습니다.\n");
		printf("다시 입력하십시오.\n");
 
		return 0;
	}
 
	printf("군-구 입력:>>");
	gets(gungu_in);
 
	if(strcmp(gungu_in,"\0")==0){
		printf("빈 단어가  입력되었습니다.\n");
		printf("다시 입력하십시오.\n");
 
		return 0;
	}
 
	printf("읍-동-면 입력:>>");
	gets(eupdongmyun_in);
 
	if(strcmp(eupdongmyun_in,"\0")==0){
		printf("빈 단어가  입력되었습니다.\n");
		printf("다시 입력하십시오.\n");
 
		return 0;
	}
 
	printf("길  입력:>>");
	gets(gil_in);
 
	if(strcmp(gil_in,"\0")==0){
		printf("빈 단어가  입력되었습니다.\n");
		printf("다시 입력하십시오.\n");
 
		return 0;
	}
 
	printf("호 입력:>>");
	gets(ho_in);
 
	if(strcmp(ho_in,"\0")==0){
		printf("빈 단어가  입력되었습니다.\n");
		printf("다시 입력하십시오.\n");
 
		return 0;
	}
 
	printf("이름 입력:>>");
	gets(name_in);
 
	if(strcmp(name_in,"\0")==0){
		printf("빈 단어가  입력되었습니다.\n");
		printf("다시 입력하십시오.\n");
 
		return 0;
	}
 
	for(i=0;i<SIZE;i++){
		if(Address[i].bunho==0){
			Address[i].bunho=1;
			strcpy(Address[i].sido,sido_in);
			strcpy(Address[i].gungu,gungu_in);
			strcpy(Address[i].eupdongmyun,eupdongmyun_in);
			strcpy(Address[i].gil,gil_in);
			strcpy(Address[i].ho,ho_in);
			strcpy(Address[i].name,name_in);
 
			break;
		}
	}
	printf("주소가 입력되었습니다.\n");
 
	return 0;
}
 
int output(void)
{
	int i;
	int count=0;
 
	printf("== ★출력★ ==\n");
 
	for(i=0;i<SIZE;i++){
		if(Address[i].bunho==1){
			printf("%s %s \n",Address[i].sido,Address[i].gungu);
			printf("%s %s \n",Address[i].eupdongmyun,Address[i].gil);
			printf("%s %s \n",Address[i].ho,Address[i].name);
			printf("=================================\n");
			count++;
		}
		if(count==3){
			printf("아무키나 누르세요.\n");
			getchar();
			count=0;
		}
	}
 
	return 0;
}
 
int modify(void)
{
	int i;
	int k; //수정할 주소 인덱스 번호 변수
	int count=0;
	char sido_mo[15]="\0";
	char gungu_mo[11]="\0";
	char eupdongmyun_mo[11]="\0";
	char gil_mo[11]="\0";
	char ho_mo[7]="\0";
	char name_mo[11]="\0";
 
	printf("== ★수정★ ==\n");
	printf("수정할주소이름입력:>>");
	gets(name_mo);
 
	if(strcmp(name_mo,"\0")==0){
		printf("이름 입력이 되지 않았습니다.\n");
		printf("다시 입력하십시오.\n");
 
		return 0;
	}
 
	for(i=0;i<SIZE;i++){
		if(strcmp(name_mo,Address[i].name)==0){
			printf("%s %s \n",Address[i].sido,Address[i].gungu);
			printf("%s %s \n",Address[i].eupdongmyun,Address[i].gil);
			printf("%s %s \n",Address[i].ho,Address[i].name);
			printf("수정할 주소 이름이 검색되었습니다.\n");
			printf("=================================\n");
			k=i;
		}
		else
			count++;
	}
 
	if(count==SIZE){
		printf("수정할 주소 이름이 없습니다.\n");
		return 0;
	}
 
	printf("수정할 주소 이름 입력하겠습니다.\n");
	printf("수정시-도 입력:>>");
	gets(sido_mo);
 
	if(strcmp(sido_mo,"\0")==0){
		printf("빈 단어가  입력되었습니다.\n");
		printf("다시 입력하십시오.\n");
 
		return 0;
	}
 
	printf("수정군-구 입력:>>");
	gets(gungu_mo);
 
	if(strcmp(gungu_mo,"\0")==0){
		printf("빈 단어가  입력되었습니다.\n");
		printf("다시 입력하십시오.\n");
 
		return 0;
	}
 
	printf("수정읍-동-면 입력:>>");
	gets(eupdongmyun_mo);
 
	if(strcmp(eupdongmyun_mo,"\0")==0){
		printf("빈 단어가  입력되었습니다.\n");
		printf("다시 입력하십시오.\n");
 
		return 0;
	}
 
	printf("수정길  입력:>>");
	gets(gil_mo);
 
	if(strcmp(gil_mo,"\0")==0){
		printf("빈 단어가  입력되었습니다.\n");
		printf("다시 입력하십시오.\n");
 
		return 0;
	}
 
	printf("수정호 입력:>>");
	gets(ho_mo);
 
	if(strcmp(ho_mo,"\0")==0){
		printf("빈 단어가  입력되었습니다.\n");
		printf("다시 입력하십시오.\n");
 
		return 0;
	}
 
	printf("수정이름 입력:>>");
	gets(name_mo);
 
	if(strcmp(name_mo,"\0")==0){
		printf("빈 단어가  입력되었습니다.\n");
		printf("다시 입력하십시오.\n");
 
		return 0;
	}
	strcpy(Address[k].sido,sido_mo);
	strcpy(Address[k].gungu,gungu_mo);
	strcpy(Address[k].eupdongmyun,eupdongmyun_mo);
	strcpy(Address[k].gil,gil_mo);
	strcpy(Address[k].ho,ho_mo);
	strcpy(Address[k].name,name_mo);
 
	printf("주소와 이름을 수정하였습니다.\n");
 
	return 0;
 
}
 
int del(void)
{
	int i;
	int yn;
	int count=0;
	char name_de[11]="\0";
 
	printf("== ★삭제★ ==\n");
	printf("삭제할주소이름입력:>>");
	gets(name_de);
 
	if(strcmp(name_de,"\0")==0){
		printf("이름이 입력되지 않았습니다.\n");
		printf("다시 입력 하십시오.\n");
 
		return 0;
	}
	for(i=0;i<SIZE;i++){
		if(strcmp(name_de,Address[i].name)==0){
			printf("%s %s \n",Address[i].sido,Address[i].gungu);
			printf("%s %s \n",Address[i].eupdongmyun,Address[i].gil);
			printf("%s %s \n",Address[i].ho,Address[i].name);
			printf("삭제할 주소 이름이 검색되었습니다.\n");
			printf("=================================\n");
 
			printf("삭제하시겠습니까?(y/n)>>");
			yn=_getche();
			if(yn=='y'){
				Address[i].bunho=0;
				Address[i].sido[0]='\0';
				Address[i].gungu[0]='\0';
				Address[i].eupdongmyun[0]='\0';
				Address[i].gil[0]='\0';
				Address[i].ho[0]='\0';
				Address[i].name[0]='\0';
 
				printf("\n주소 이름이 삭제가 되었습니다.\n");
				return 0;
			}
			else if(yn=='n'){
				printf("\n삭제 안합니다.\n");
				return 0;
			}
			else{
				fflush(stdin);
				printf("\n잘못입력하셨습니다.\n");
				return 0;
			}
		}
		else
			count++;
	}
 
	if(count==SIZE){
		printf("삭제할 주소 이름이 없습니다.\n");
		return 0;
	}
 
	return 0;
}
 
int search(void)
{
	int i;
	int count=0;
	char name_se[11]="\0";
 
	printf("== ★검색★ ==\n");
	printf("검색할주소이름입력:>>");
	gets(name_se);
 
	if(strcmp(name_se,"\0")==0){
		printf("이름 입력이 되지 않았습니다.\n");
		printf("다시 입력하십시오.\n");
 
		return 0;
	}
 
	for(i=0;i<SIZE;i++){
		if(strcmp(name_se,Address[i].name)==0){
			printf("%s %s \n",Address[i].sido,Address[i].gungu);
			printf("%s %s \n",Address[i].eupdongmyun,Address[i].gil);
			printf("%s %s \n",Address[i].ho,Address[i].name);
			printf("주소 이름이 검색되었습니다.\n");
			printf("=================================\n");
 
		}
		else
			count++;
	}
	if(count==SIZE){
		printf("검색할 주소 이름이 없습니다.\n");
		return 0;
	}
 
	return 0;
}
 
int help(void)
{
	printf("==★도움말★==\n ");
	printf("주소록 관리 프로그램입니다.\n");
	printf("수정 삭제 검색시 이름을 입력하세요.\n");
 
	return 0;
}
 
int quit(void)
{
	printf("끝마치겠습니다.!!\n");
	exit(0);
}
 
int main(void)
{
    static int sum=1;
    int chr;
 
    initial();
 
    while(1)
    {
 
 
        if(sum==1)
        {
            menu1();
 
            chr=_getch();
 
            if(chr==0 || chr==224)
                chr=_getch();
 
            if(chr==80) sum++;
            else if(chr==72) sum--;
            else if(chr==49) sum=1;
            else if(chr==50) sum=2;
            else if(chr==51) sum=3;
            else if(chr==52) sum=4;
            else if(chr==53) sum=5;
	    else if(chr==54) sum=6;
	    else if(chr==55) sum=7;
            else if(chr==13) input();
        }
        else if(sum==2)
        {
            menu2();
 
            chr=_getch();
 
            if(chr==0 || chr==224)
                chr=_getch();
 
            if(chr==80) sum++;
            else if(chr==72) sum--;
            else if(chr==49) sum=1;
            else if(chr==50) sum=2;
            else if(chr==51) sum=3;
            else if(chr==52) sum=4;
            else if(chr==53) sum=5;
	    else if(chr==54) sum=6;
	    else if(chr==55) sum=7;
            else if(chr==13) output();
        }
        else if(sum==3)
        {
            menu3();
 
            chr=_getch();
 
            if(chr==0 || chr==224)
                chr=_getch();
 
            if(chr==80) sum++;
            else if(chr==72) sum--;
            else if(chr==49) sum=1;
            else if(chr==50) sum=2;
            else if(chr==51) sum=3;
            else if(chr==52) sum=4;
            else if(chr==53) sum=5;
	    else if(chr==54) sum=6;
	    else if(chr==55) sum=7;
            else if(chr==13) modify();
 
        }
        else if(sum==4)
        {
            menu4();
 
            chr=_getch();
 
            if(chr==0 || chr==224)
                chr=_getch();
 
            if(chr==80) sum++;
            else if(chr==72) sum--;
            else if(chr==49) sum=1;
            else if(chr==50) sum=2;
            else if(chr==51) sum=3;
            else if(chr==52) sum=4;
            else if(chr==53) sum=5;
	    else if(chr==54) sum=6;
	    else if(chr==55) sum=7;
            else if(chr==13) del();
        }
        else if(sum==5)
        {
            menu5();
 
            chr=_getch();
 
            if(chr==0 || chr==224)
                chr=_getch();
 
            if(chr==80) sum++;
            else if(chr==72) sum--;
            else if(chr==49) sum=1;
            else if(chr==50) sum=2;
            else if(chr==51) sum=3;
            else if(chr==52) sum=4;
            else if(chr==53) sum=5;
	    else if(chr==54) sum=6;
	    else if(chr==55) sum=7;
            else if(chr==13) search();
        }
	else if(sum==6)
        {
            menu6();
 
            chr=_getch();
 
            if(chr==0 || chr==224)
                chr=_getch();
 
            if(chr==80) sum++;
            else if(chr==72) sum--;
            else if(chr==49) sum=1;
            else if(chr==50) sum=2;
            else if(chr==51) sum=3;
            else if(chr==52) sum=4;
            else if(chr==53) sum=5;
	    else if(chr==54) sum=6;
	    else if(chr==55) sum=7;
            else if(chr==13) help();
        }else if(sum==7)
        {
            menu7();
 
            chr=_getch();
 
            if(chr==0 || chr==224)
                chr=_getch();
 
            if(chr==80) sum++;
            else if(chr==72) sum--;
            else if(chr==49) sum=1;
            else if(chr==50) sum=2;
            else if(chr==51) sum=3;
            else if(chr==52) sum=4;
            else if(chr==53) sum=5;
	    else if(chr==54) sum=6;
	    else if(chr==55) sum=7;
            else if(chr==13) quit();
        }
        else if(sum<1) sum=7;
        else if(sum>7) sum=1;
    }
    return 0;
 
}

주소록 관리 프로그램 신청하셔서 작성하였습니다.
초보자용인즉 이해하십시요.
Forums: 
세벌의 이미지

함수 이름을 menu1, menu2 이런 식으로 하면, 함수이름만 보면 그 함수가 뭔 일을 하는지 모르겠죠?
어떻게 개선하면 좋을까도 생각해보면 초보자 실력 향상에 도움 되실 듯.

joone의 이미지

오랜만에 순수 C코드를 봅니다. 지금 C코드를 보니, 정말 로켓이 떨어지고 이런 이유를 알 것 같습니다. 코드만 봐도 웬지 지뢰에 여기저기 숨겨진 느낌입니다. 코딩을 못하셨는다 의미가 아니라, C 자체가 안전한 코드를 만들지 못한다는 의미입니다.

bushi의 이미지

https://github.com/chrislgarry/Apollo-11 보시면 막 로켓이 둥실둥실 두둥실 잘 날아갈것 같은 안정감이 느껴지시나요 ?

joone의 이미지

https://www.bugsnag.com/blog/bug-day-ariane-5-disaster

아리안 로켓은 터졌죠. 수많은 엔지니어들 안전한 코드를 만들기 위해 노력합니다. 하지만 완벽할 수는 없습니다

파이썬3의 이미지

C 언어에서 return 0 은 어떤 의미가 있는지요?
파이썬에서의 return 과는 어떤 차이가 있는지 정말 정말 궁금하네요;;;
꾸벅,,,

[크롬북 우분투 18.04 에서 피드백 하나 보냅니다]

익명 사용자의 이미지

파이썬3의 이미지

읽어보니 rerurn 0 은 정상 종료였네요;;
감사합니다^^^

[크롬북 우분투 18.04에서 적었어요]

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.