<?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=OurMajorLangIsCAndCPlusPlus%2Fprint%2F%EC%9D%B4%EB%8F%84%ED%98%84</id>
	<title>OurMajorLangIsCAndCPlusPlus/print/이도현 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=OurMajorLangIsCAndCPlusPlus%2Fprint%2F%EC%9D%B4%EB%8F%84%ED%98%84"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=OurMajorLangIsCAndCPlusPlus/print/%EC%9D%B4%EB%8F%84%ED%98%84&amp;action=history"/>
	<updated>2026-05-14T21:40:06Z</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=OurMajorLangIsCAndCPlusPlus/print/%EC%9D%B4%EB%8F%84%ED%98%84&amp;diff=37370&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:23, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=OurMajorLangIsCAndCPlusPlus/print/%EC%9D%B4%EB%8F%84%ED%98%84&amp;diff=37370&amp;oldid=prev"/>
		<updated>2021-02-07T05:23:57Z</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;
&lt;br /&gt;
==== 코드 ====&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;cstdlib&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;stdarg.h&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;cctype&amp;amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 void print(const char *, ...);&lt;br /&gt;
 &lt;br /&gt;
 int main()&lt;br /&gt;
 {&lt;br /&gt;
 	int a = 10; &lt;br /&gt;
 	char *b = &amp;quot;example&amp;quot;; &lt;br /&gt;
 	double c = 10.5;&lt;br /&gt;
 	print(&amp;quot;number: %d, string: %s, real number: %f\n&amp;quot;, a, b, c); &lt;br /&gt;
 	print(&amp;quot;%d. 1234 string %s %f\n&amp;quot;, 1234, &amp;quot;test&amp;quot;, 1234.124124);&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 	int aa[3] = {1, 2, 3}; &lt;br /&gt;
 	char *bb[2] = {&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;}; &lt;br /&gt;
 	double cc[5] = {3.1, 3.2, 314.12451, -123654.12351, 0.12412431};&lt;br /&gt;
 	print(&amp;quot;array: @d\n&amp;quot;, aa, 3); &lt;br /&gt;
 	print(&amp;quot;array: @s\n&amp;quot;, bb, 2);&lt;br /&gt;
 	print(&amp;quot;array: @f\n&amp;quot;, cc, 5);&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 	int aaa = 123; &lt;br /&gt;
 	int bbb = 12345; &lt;br /&gt;
 	int ccc = 12345678;&lt;br /&gt;
 	char *aaaa = &amp;quot;example&amp;quot;;&lt;br /&gt;
 	double cccc = 124.113;&lt;br /&gt;
 	print(&amp;quot;number: %5d\n&amp;quot;, aaa); &lt;br /&gt;
 	print(&amp;quot;number: %5d\n&amp;quot;, bbb); &lt;br /&gt;
 	print(&amp;quot;number: %5d\n&amp;quot;, ccc);&lt;br /&gt;
 	print(&amp;quot;string: %9s\n&amp;quot;, aaaa);&lt;br /&gt;
 	print(&amp;quot;number: %9f\n&amp;quot;, cccc);&lt;br /&gt;
  &lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void print(const char *arg, ...)&lt;br /&gt;
 {&lt;br /&gt;
 	char print_string[1024];&lt;br /&gt;
 	va_list vargs;					// 가변인자 리스트&lt;br /&gt;
 	int arg_index = 0;&lt;br /&gt;
 	&lt;br /&gt;
 	va_start(vargs, arg);&lt;br /&gt;
 &lt;br /&gt;
 	while (arg[arg_index] != &amp;#039;\0&amp;#039;)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (arg[arg_index] == &amp;#039;%&amp;#039;)&lt;br /&gt;
 		{&lt;br /&gt;
 			arg_index++;&lt;br /&gt;
 &lt;br /&gt;
             int align = 0; &lt;br /&gt;
             if(isdigit((int)arg[arg_index])) &lt;br /&gt;
             { &lt;br /&gt;
                 align = arg[arg_index] - &amp;#039;0&amp;#039;; &lt;br /&gt;
                 arg_index++;&lt;br /&gt;
             } &lt;br /&gt;
 &lt;br /&gt;
 			if (arg[arg_index] == &amp;#039;d&amp;#039;)			// 정수형 출력&lt;br /&gt;
 			{&lt;br /&gt;
 				int print_integer = va_arg(vargs, int);&lt;br /&gt;
 				itoa(print_integer, print_string, 10);&lt;br /&gt;
 				&lt;br /&gt;
 				int space = align - strlen(print_string); &lt;br /&gt;
 				for(int i = 0 ; i &amp;amp;lt; space ; i++) &lt;br /&gt;
 					putchar(&amp;#039; &amp;#039;);&lt;br /&gt;
 				fputs(print_string, stdout);&lt;br /&gt;
 			}&lt;br /&gt;
 			else if (arg[arg_index] == &amp;#039;s&amp;#039;)		// string(char *)형 출력&lt;br /&gt;
 			{&lt;br /&gt;
 				char *s = va_arg(vargs, char *);&lt;br /&gt;
 				strcpy(print_string, s);&lt;br /&gt;
 				&lt;br /&gt;
 				int space = align - strlen(print_string); &lt;br /&gt;
 				for(int i = 0 ; i &amp;amp;lt; space ; i++) &lt;br /&gt;
 					putchar(&amp;#039; &amp;#039;);&lt;br /&gt;
 				fputs(print_string, stdout);&lt;br /&gt;
 			}&lt;br /&gt;
 			else if (arg[arg_index] == &amp;#039;f&amp;#039;)		// float형 출력&lt;br /&gt;
 			{&lt;br /&gt;
 				int decimal, sign, zero_position, index = 0;&lt;br /&gt;
 				double print_double = va_arg(vargs, double);&lt;br /&gt;
 				char *s = _fcvt(print_double, 7, &amp;amp;amp;decimal, &amp;amp;amp;sign);&lt;br /&gt;
 				&lt;br /&gt;
 				// 소수점아래 7자리까지 출력이므로 소수점 뒤에 0을 제거해야 한다.&lt;br /&gt;
 				zero_position = strlen(s) - 1;&lt;br /&gt;
 				while (s[zero_position] == &amp;#039;0&amp;#039;)&lt;br /&gt;
 					zero_position--;&lt;br /&gt;
 &lt;br /&gt;
 				// 소수점을 포함한 숫자의 개수&lt;br /&gt;
 				int space = align - zero_position - 2; &lt;br /&gt;
 				for(int i = 0 ; i &amp;amp;lt; space ; i++) &lt;br /&gt;
 					putchar(&amp;#039; &amp;#039;);&lt;br /&gt;
 &lt;br /&gt;
 				// 부호 출력&lt;br /&gt;
 				if (sign == 1)&lt;br /&gt;
 					putchar(&amp;#039;-&amp;#039;);&lt;br /&gt;
 &lt;br /&gt;
 				// 0.xxx 일경우 0 표시)&lt;br /&gt;
 				if (decimal == 0)	&lt;br /&gt;
 					putchar(&amp;#039;0&amp;#039;);&lt;br /&gt;
 	&lt;br /&gt;
 				for (int i = 0; i &amp;amp;lt;= zero_position; i++)&lt;br /&gt;
 				{&lt;br /&gt;
 					if (i == decimal)	// 소수점 위치 찍기&lt;br /&gt;
 						putchar(&amp;#039;.&amp;#039;);&lt;br /&gt;
 					putchar(s[i]);&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 			arg_index++;&lt;br /&gt;
 		}&lt;br /&gt;
 		else if (arg[arg_index] == &amp;#039;@&amp;#039;)&lt;br /&gt;
 		{&lt;br /&gt;
 			arg_index++;&lt;br /&gt;
 			if (arg[arg_index] == &amp;#039;d&amp;#039;)			// 정수형 배열 출력&lt;br /&gt;
 			{&lt;br /&gt;
 				int *int_array = va_arg(vargs, int*);&lt;br /&gt;
 				int array_size = va_arg(vargs, int);&lt;br /&gt;
 				&lt;br /&gt;
 				putchar(&amp;#039;{&amp;#039;);&lt;br /&gt;
 				for (int i = 0; i &amp;amp;lt; array_size; i++)&lt;br /&gt;
 				{&lt;br /&gt;
 					putchar(&amp;#039; &amp;#039;);&lt;br /&gt;
 					itoa(int_array[i], print_string, 10);&lt;br /&gt;
 					fputs(print_string, stdout);&lt;br /&gt;
 					&lt;br /&gt;
 					if (i &amp;amp;lt; array_size - 1)&lt;br /&gt;
 						putchar(&amp;#039;,&amp;#039;);&lt;br /&gt;
 				}&lt;br /&gt;
 				putchar(&amp;#039; &amp;#039;);&lt;br /&gt;
 				putchar(&amp;#039;}&amp;#039;);&lt;br /&gt;
 			}&lt;br /&gt;
 			else if (arg[arg_index] == &amp;#039;s&amp;#039;)		// string(char *)형 배열 출력&lt;br /&gt;
 			{&lt;br /&gt;
 				char **string_array = va_arg(vargs, char**);&lt;br /&gt;
 				int array_size = va_arg(vargs, int);&lt;br /&gt;
 				&lt;br /&gt;
 				putchar(&amp;#039;{&amp;#039;);&lt;br /&gt;
 				for (int i = 0; i &amp;amp;lt; array_size; i++)&lt;br /&gt;
 				{&lt;br /&gt;
 					putchar(&amp;#039; &amp;#039;);&lt;br /&gt;
 					strcpy(print_string, string_array[i]);&lt;br /&gt;
 					fputs(print_string, stdout);&lt;br /&gt;
 					&lt;br /&gt;
 					if (i &amp;amp;lt; array_size - 1)&lt;br /&gt;
 						putchar(&amp;#039;,&amp;#039;);&lt;br /&gt;
 				}&lt;br /&gt;
 				putchar(&amp;#039; &amp;#039;);&lt;br /&gt;
 				putchar(&amp;#039;}&amp;#039;);&lt;br /&gt;
 			}&lt;br /&gt;
 			else if (arg[arg_index] == &amp;#039;f&amp;#039;)		// float형 배열 출력&lt;br /&gt;
 			{&lt;br /&gt;
 				double *double_array = va_arg(vargs, double*);&lt;br /&gt;
 				int array_size = va_arg(vargs, int);&lt;br /&gt;
 				&lt;br /&gt;
 				putchar(&amp;#039;{&amp;#039;);&lt;br /&gt;
 				for (int i = 0; i &amp;amp;lt; array_size; i++)&lt;br /&gt;
 				{&lt;br /&gt;
 					putchar(&amp;#039; &amp;#039;);&lt;br /&gt;
 					int decimal, sign, zero_position, index = 0;&lt;br /&gt;
 					char *s = _fcvt(double_array[i], 7, &amp;amp;amp;decimal, &amp;amp;amp;sign);&lt;br /&gt;
 &lt;br /&gt;
 					// 부호 출력&lt;br /&gt;
 					if (sign == 1)&lt;br /&gt;
 						putchar(&amp;#039;-&amp;#039;);&lt;br /&gt;
 &lt;br /&gt;
 					// 0.xxx 일경우 0 표시)&lt;br /&gt;
 					if (decimal == 0)	&lt;br /&gt;
 						putchar(&amp;#039;0&amp;#039;);&lt;br /&gt;
 &lt;br /&gt;
 					// 소수점아래 7자리까지 출력이므로 소수점 뒤에 0을 제거해야 한다.&lt;br /&gt;
 					zero_position = strlen(s) - 1;&lt;br /&gt;
 					while (s[zero_position] == &amp;#039;0&amp;#039;)&lt;br /&gt;
 						zero_position--;&lt;br /&gt;
 &lt;br /&gt;
 					for (int j = 0; j &amp;amp;lt;= zero_position; j++)&lt;br /&gt;
 					{&lt;br /&gt;
 						if (j == decimal)	// 소수점 위치 찍기&lt;br /&gt;
 							putchar(&amp;#039;.&amp;#039;);&lt;br /&gt;
 						putchar(s[j]);&lt;br /&gt;
 					}&lt;br /&gt;
 					&lt;br /&gt;
 					if (i &amp;amp;lt; array_size - 1)&lt;br /&gt;
 						putchar(&amp;#039;,&amp;#039;);&lt;br /&gt;
 				}&lt;br /&gt;
 				putchar(&amp;#039; &amp;#039;);&lt;br /&gt;
 				putchar(&amp;#039;}&amp;#039;);&lt;br /&gt;
 			}&lt;br /&gt;
 			arg_index++;&lt;br /&gt;
 		}&lt;br /&gt;
 		else&lt;br /&gt;
 		{&lt;br /&gt;
 			putchar(arg[arg_index]);&lt;br /&gt;
 			arg_index++;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
----&lt;br /&gt;
[[OurMajorLangIsCAndCPlusPlus/print]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>