<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=%EA%B8%B0%EB%B3%B8%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4%2F%EC%A1%B0%ED%98%84%ED%83%9C</id>
	<title>기본데이터베이스/조현태 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=%EA%B8%B0%EB%B3%B8%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4%2F%EC%A1%B0%ED%98%84%ED%83%9C"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%EA%B8%B0%EB%B3%B8%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4/%EC%A1%B0%ED%98%84%ED%83%9C&amp;action=history"/>
	<updated>2026-05-15T15:17:46Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=%EA%B8%B0%EB%B3%B8%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4/%EC%A1%B0%ED%98%84%ED%83%9C&amp;diff=42696&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:28, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%EA%B8%B0%EB%B3%B8%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4/%EC%A1%B0%ED%98%84%ED%83%9C&amp;diff=42696&amp;oldid=prev"/>
		<updated>2021-02-07T05:28:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 느낀점 및 설명 ==&lt;br /&gt;
 오오.. 귀차니즘이 글에달한 소스여요.ㅎ&lt;br /&gt;
 선형 리스트로 데이터베이스 구축 -&amp;gt; 자료구조를 배열을 사용하세요~ 로 이해....OTL&lt;br /&gt;
 그많은 자료구조중에서 왜 배열이냐고오..ㅠ.ㅜ 막강한 메모리 낭비와 오버플로우의 한계를 느끼고 싶은 것인가아..;;ㅁ;;&lt;br /&gt;
 동적 할당이나 트리구조로 좀더 이쁘게 만들 수 있었으나.. 시키는 대로 해야지 뭐..ㅠ.ㅜ&lt;br /&gt;
 그래서 작성. 결과는 아래와 같으며 심지어 id역시 문자열로 처리해서 맘껏 적어 넣을 수 있다.&lt;br /&gt;
 그결과 자료역시 일반적으로 시간순서대로 저장하기때문에 검색속도는 평범..OTL&lt;br /&gt;
 또한 소스에서 보시다시피.. 영어실력의 한계가 마구마구 느껴지며~&lt;br /&gt;
 에러코드는.. 단순한 장식.. ㅋ (뭐든지 뽀대가 나고 봐야함.ㅎ)&lt;br /&gt;
 그럼 좋은 하루 되시길.ㅎ&lt;br /&gt;
&lt;br /&gt;
  // 실행해서 ?를 입력하면 입력 가능한 명령어를 볼 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
== 소스 ==&lt;br /&gt;
 #include &amp;amp;lt;stdio.h&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;string.h&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 const int MAX_DATA_SIZE=100;&lt;br /&gt;
 const int HANG_MOK=4;&lt;br /&gt;
 const int MAX_MENU=8;&lt;br /&gt;
 const int QUIT=6;&lt;br /&gt;
 const char menu[MAX_MENU][20]={&amp;quot;insert&amp;quot;,&amp;quot;modify&amp;quot;,&amp;quot;delete&amp;quot;,&amp;quot;undelete&amp;quot;,&amp;quot;search&amp;quot;,&amp;quot;list&amp;quot;,&amp;quot;quit&amp;quot;,&amp;quot;?&amp;quot;};&lt;br /&gt;
 const char print_outs[HANG_MOK][5]={&amp;quot;id&amp;quot;,&amp;quot;name&amp;quot;,&amp;quot;tel&amp;quot;,&amp;quot;add&amp;quot;};&lt;br /&gt;
 const int MAX_BLOCK_SIZE=256;&lt;br /&gt;
 const int FALSE=-1;&lt;br /&gt;
 const int ALL=-1;&lt;br /&gt;
 &lt;br /&gt;
 char datas[MAX_DATA_SIZE+1][HANG_MOK][MAX_BLOCK_SIZE];&lt;br /&gt;
 int how_many_data=0;&lt;br /&gt;
 int prv_del=-1;&lt;br /&gt;
 &lt;br /&gt;
 int select_menu();&lt;br /&gt;
 void function_insert();void function_modify();void function_delete();void function_undelete();void function_search();void function_list();void function_quit();void function_help();&lt;br /&gt;
 int such_data();&lt;br /&gt;
 void print_list(int);&lt;br /&gt;
 void modify_data(int);&lt;br /&gt;
 void print_cursur();&lt;br /&gt;
 &lt;br /&gt;
 void main()&lt;br /&gt;
 {&lt;br /&gt;
 	void (*functions[MAX_MENU])(void)={function_insert,function_modify,function_delete,function_undelete,function_search,function_list,function_quit,function_help};&lt;br /&gt;
 	while (1)&lt;br /&gt;
 	{&lt;br /&gt;
 		int selected_number=select_menu();&lt;br /&gt;
 		functions[selected_number]();&lt;br /&gt;
 		if (QUIT==selected_number)&lt;br /&gt;
 			break;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int select_menu()&lt;br /&gt;
 {&lt;br /&gt;
 	char temp_input[20];&lt;br /&gt;
 	while (1)&lt;br /&gt;
 	{&lt;br /&gt;
 		print_cursur();&lt;br /&gt;
 		scanf(&amp;quot;%s&amp;quot;,temp_input);&lt;br /&gt;
 		for (register int i=0; i&amp;amp;lt;MAX_MENU; ++i)&lt;br /&gt;
 		{&lt;br /&gt;
 			if (0==strcmp(temp_input,menu[i]))&lt;br /&gt;
 				return i;&lt;br /&gt;
 		}&lt;br /&gt;
 		printf (&amp;quot;ERROR!! - code:00 - Wrong order!!\n&amp;quot;);&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void function_insert()&lt;br /&gt;
 {&lt;br /&gt;
 	if (MAX_DATA_SIZE==how_many_data)&lt;br /&gt;
 		printf(&amp;quot;ERROR!! - code:03 - data overflow!!\n&amp;quot;);&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		modify_data(how_many_data);&lt;br /&gt;
 		++how_many_data;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void function_modify()&lt;br /&gt;
 {&lt;br /&gt;
 	int target=such_data();&lt;br /&gt;
 	if (FALSE!=target)&lt;br /&gt;
 		modify_data(target);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void function_delete()&lt;br /&gt;
 {&lt;br /&gt;
 	int target=such_data();&lt;br /&gt;
 	if (FALSE!=target)&lt;br /&gt;
 	{&lt;br /&gt;
 		for (register int i=0; i&amp;amp;lt;HANG_MOK; ++i)&lt;br /&gt;
 			strcpy(datas[MAX_DATA_SIZE][i],datas[target][i]);&lt;br /&gt;
 		for (register int i=target+1; i&amp;amp;lt;how_many_data; ++i)&lt;br /&gt;
 		{&lt;br /&gt;
 			for (register int j=0; j&amp;amp;lt;HANG_MOK; ++j)&lt;br /&gt;
 				strcpy(datas[i-1][j],datas[i][j]);&lt;br /&gt;
 		}&lt;br /&gt;
 		--how_many_data;&lt;br /&gt;
 		prv_del=target;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void function_undelete()&lt;br /&gt;
 {&lt;br /&gt;
 	if (-1==prv_del)&lt;br /&gt;
 		printf(&amp;quot;ERROR!! - code:02 - Can&amp;#039;t find deleted data!!\n&amp;quot;);&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		for (register int i=how_many_data-1; prv_del&amp;amp;lt;=i; --i)&lt;br /&gt;
 		{&lt;br /&gt;
 			for (register int j=0; j&amp;amp;lt;HANG_MOK; ++j)&lt;br /&gt;
 				strcpy(datas[i+1][j],datas[i][j]);&lt;br /&gt;
 		}&lt;br /&gt;
 		for (register int i=0; i&amp;amp;lt;HANG_MOK; ++i)&lt;br /&gt;
 			strcpy(datas[prv_del][i],datas[MAX_DATA_SIZE][i]);&lt;br /&gt;
 		++how_many_data;&lt;br /&gt;
 		prv_del=-1;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void function_search()&lt;br /&gt;
 {&lt;br /&gt;
 	int target=such_data();&lt;br /&gt;
 	if (FALSE!=target)&lt;br /&gt;
 		print_list(target);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void function_list()&lt;br /&gt;
 {&lt;br /&gt;
 	print_list(ALL);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void function_quit()&lt;br /&gt;
 {&lt;br /&gt;
 	printf (&amp;quot;Goodbye~\n&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void function_help()&lt;br /&gt;
 {&lt;br /&gt;
 	printf(&amp;quot;Menu: &amp;quot;);&lt;br /&gt;
 	for (register int i=0; i&amp;amp;lt;MAX_MENU; ++i)&lt;br /&gt;
 		printf(&amp;quot; %s &amp;quot;,menu[i]);&lt;br /&gt;
 	printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int such_data()&lt;br /&gt;
 {&lt;br /&gt;
 	int select_number;&lt;br /&gt;
 	char temp_data[MAX_BLOCK_SIZE];&lt;br /&gt;
 	printf(&amp;quot;select number : &amp;quot;);&lt;br /&gt;
 	for (register int i=0; i&amp;amp;lt;HANG_MOK; ++i)&lt;br /&gt;
 		printf(&amp;quot;%d. %s\t&amp;quot;,i,print_outs[i]);&lt;br /&gt;
 	printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
 	print_cursur();&lt;br /&gt;
 	scanf(&amp;quot;%d&amp;quot;,&amp;amp;amp;select_number);&lt;br /&gt;
 	printf(&amp;quot;content? &amp;quot;);&lt;br /&gt;
 	scanf(&amp;quot;%s&amp;quot;,temp_data);&lt;br /&gt;
 	for (register int i=0; i&amp;amp;lt;how_many_data; ++i)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (0==strcmp(temp_data,datas[i][select_number]))&lt;br /&gt;
 			return i;&lt;br /&gt;
 	}&lt;br /&gt;
 	printf(&amp;quot;ERROR!! - code:01 - Can&amp;#039;t find!!\n&amp;quot;);&lt;br /&gt;
 	return FALSE;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void print_list(int number)&lt;br /&gt;
 {&lt;br /&gt;
 	for (register int i=0; i&amp;amp;lt;HANG_MOK; ++i)&lt;br /&gt;
 		printf(&amp;quot;%s\t&amp;quot;,print_outs[i]);&lt;br /&gt;
 	printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
 	if (ALL==number)&lt;br /&gt;
 	{&lt;br /&gt;
 		for (register int i=0; i&amp;amp;lt;how_many_data; ++i)&lt;br /&gt;
 		{&lt;br /&gt;
 			for (register int j=0; j&amp;amp;lt;HANG_MOK; ++j)&lt;br /&gt;
 				printf(&amp;quot;%s\t&amp;quot;,datas[i][j]);&lt;br /&gt;
 			printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		for (register int j=0; j&amp;amp;lt;HANG_MOK; ++j)&lt;br /&gt;
 			printf(&amp;quot;%s\t&amp;quot;,datas[number][j]);&lt;br /&gt;
 		printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void modify_data(int target)&lt;br /&gt;
 {&lt;br /&gt;
 	for (register int i=0; i&amp;amp;lt;HANG_MOK; ++i)&lt;br /&gt;
 	{&lt;br /&gt;
 		printf(&amp;quot;%s? &amp;quot;,print_outs[i]);&lt;br /&gt;
 		scanf(&amp;quot;%s&amp;quot;,datas[target][i]);&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void print_cursur()&lt;br /&gt;
 {&lt;br /&gt;
 	printf(&amp;quot;&amp;amp;gt;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
== 나에게 할말 ==&lt;br /&gt;
----&lt;br /&gt;
[[LittleAOI]] [[기본데이터베이스]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>