fork download
  1. /* Homework my_printf.c
  2.  * 2017-2 Internet Programming
  3.  * Written by Choe Hyeong Jin, CS Dept., Univ. of Seoul
  4.  */
  5. #include <stdio.h> // putchar, puts
  6. #include <stdarg.h> // 가변 인자 ... 처리
  7.  
  8. char *convert(unsigned int num, int base) { // 원하는 진법으로 변환해주는 함수
  9. static char Representation[]= "0123456789ABCDEF";
  10. static char buffer[50]; // 최대 49개의 숫자 표시
  11. char *ptr;
  12.  
  13. ptr = &buffer[49];
  14. *ptr = '\0'; // 문자열의 끝에는 항상 '\0'을 표시
  15.  
  16. do {
  17. *--ptr = Representation[num%base];
  18. num /= base;
  19. }while(num != 0); // 진법 변환 후 문자열로 처리
  20.  
  21. return(ptr);
  22. }
  23.  
  24. void my_printf(char* format,...) {
  25. char *traverse;
  26. unsigned int i;
  27. char *s;
  28.  
  29. //1. my_printf의 인수들 초기화하기.
  30. va_list arg;
  31. va_start(arg, format);
  32.  
  33. for(traverse = format; *traverse != '\0'; traverse++) { // 문자열의 끝이 나올 때까지 순회
  34. while( *traverse != '%' ) { // 형식 지정자가 나올때까지
  35. putchar(*traverse); // 한글자씩 출력
  36. traverse++; // 포인터 증가
  37. }
  38.  
  39. traverse++; // 형식 지정자 % 다음 글자 위치
  40.  
  41. //2. 인수들을 가져오고 형식 지정자에 알맞게 출력하기.
  42. switch(*traverse) {
  43. case 'c' : i = va_arg(arg,int); putchar(i); break; // 문자 인수 출력
  44. case 'd' : i = va_arg(arg,int); // 정수(10진수) 출력
  45. if(i<0) { // 음수일 경우
  46. i = -i; putchar('-');
  47. }
  48. puts(convert(i,10)); // 10진수로 변환 후 문자열 출력
  49. break;
  50. case 'o': i = va_arg(arg,unsigned int); // 8진수 출력
  51. puts(convert(i,8)); // 8진수로 변환 후 문자열 출력
  52. break;
  53. case 's': s = va_arg(arg,char *); puts(s); break; // 문자열 출력
  54. case 'x': i = va_arg(arg,unsigned int); // 16진수 출력
  55. puts(convert(i,16)); // 16진수로 변환 후 문자열 출력
  56. break;
  57. }
  58. }
  59.  
  60. //3. 인수 스캔 끝.
  61. va_end(arg);
  62. }
  63.  
  64. int main(){
  65. int i=9999;
  66. my_printf("i is %x\n", i);
  67. return 0;
  68. }
Runtime error #stdin #stdout 0s 10320KB
stdin
Standard input is empty
stdout
i is 270F

;Ht�������������,���d����D�����Dd����zRx�h���+zRx�$���0FJw�?;*3$"D��\(���8<tP����B�B�D �A(�X��
(A ABBH�����KRD�����eB�B�E �B(�H0�H8�M@r8A0A(B BBB���@dt�
�
�
 �
 ���o���
� 0���	���o���o����o�op���oPp�q+zS�q+`E�q+�p�q+zS�q+wE�q+�p�q+zS�q+�E�q+zS�q+�E�q+	/lib/x86_64-linux-gnu/libm.so.6�q+���q+�
1q+���q+�q+���q+8��q+�
1q+�1q+x1q+1q+81q+H1q+�1q+�1q+�1q+X1q+h1q+�
1q+�
1q+�
1q+�1q+�1q+�
1q+�
1q+�
1q+1q+1q+(1q+1q+�1q+�1q+H1q+81q+(1q+@�q+�6q+"0��q+h�q+Д�q+&? �q+ �q+t�q+@�,q+`��q+�q+�1q+q+ �q+��q+x��q+��RP��q+��q+���q+0�Sq+p-0�P��q+libm.so.6/lib/x86_64-linux-gnulibm.so.6/lib/x86_64-linux-gnu/libpthread.so.0 1q+���q+P�Rq+���q+���q+���q+ ��q+`�Rq+P�Rq+@�Rq+�Rq+�Rq+�Rq+��Rq+��Rq+��Rq+ �Rq+0�Rq+��Rq+��Rq+p�Rq+`�Rq+p�Rq+��Rq+��Rq+��Rq+НRq+ОRq+�Rq+�Rq+��Rq+��Rq+�Rq+ �Rq+�Rq+�Rq+@ 1q+��1q+	#��q+h�q+ؕ�q+��"1q+�#1q+�)1q+@�b1q+H��q+ 1q+(�Rq+�2q+ �q+��q+`��q+�T�R���q+(�61q+���q+(�Sq+x{!�8��q+libpthread.so.0/lib/x86_64-linux-gnulibpthread.so.0/lib/x86_64-linux-gnu/libc.so.6�Rq+p��q+�k�q+��q+���q+���q+��q+�k�q+`l�q+Pl�q+�k�q+l�q+ l�q+�l�q+�l�q+�l�q+0l�q+@l�q+�k�q+�k�q+pl�q+�l�q+�k�q+�k�q+�l�q+m�q+�l�q+�l�q+�l�q+ m�q+m�q+l�q+@�Rq+��Tq+
��q+h�q+���q+����Rq+�Rq+t
Sq+@:ZTq+0��q+�Rq+�Ɍq+@lq+ �q+葾q+H��q+���R���q+�NSq+���q+�NSq+�7�q+xx�G988 ��q+libc.so.6/lib/x86_64-linux-gnulibc.so.6���q+���q+��q+���q+���q+��q+���q+���q+��q+���q+���q+��q+���q+��q+���q+��q+h�q+���q+���q+���q+��q+h�q+���q+���q+���q+��q+dd�q+ui	$d�q+�2���u�j,q+ui	v,q+ii
�,q+����,q+����,q+����,q+����,q+��c	A,q+j,q+ui	A,q+�,q+��c	K,q+^b1q+ui	jb1q+vi	vb1q+ri	�b1q+si	�b1q+ti	�b1q+ii
�b1q+����b1q+����b1q+����b1q+��c	�b1q+��c	/b1q+^b1q+ui	/b1q+vb1q+ri	/b1q+�b1q+��c	9b1q+^b1q+ui	9b1q+�b1q+���/b1q+Tq+ui	1YTq+vi	=YTq+ii
GYTq+ri	SYTq+si	_YTq+ti	kYTq+ii
uYTq+ii
YTq+ii
�YTq+ii
�YTq+ii
�YTq+ii
�YTq+����YTq+����YTq+����YTq+����YTq+����YTq+����YTq+����YTq+����YTq+���
ZTq+���ZTq+��� ZTq+���+ZTq+��c	+ZTq+��c	YTq+=YTq+ii
YTq+���q+ui	���q+ii
���q+ii
ɇ�q+��c	@���q+���q+