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=1;
  66. my_printf("i is %d\n", i);
  67. return 0;
  68. }
Runtime error #stdin #stdout 0s 9432KB
stdin
Standard input is empty
stdout
i is 1

;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���oP`��*zC@��*`5@��*�`��*zC@��*w5@��*�`��*zC@��*�5@��*zC@��*�5@��*	/lib/x86_64-linux-gnu/libm.so.6�`��*�t��*�����*�y��*�`��*�t��*8y��*�����*�����*x����*����*8����*H����*�����*����*����*X����*h����*�����*����*�����*�����*�����*����*�����*���*����*����*(����*����*�����*���*H����*8����*(����*@�`��*�&a��*"0y��*h�`��*Є��*&? �`��* �`��*t�`��*@�a��*`y��*�`��*����*q��* �`��*x��*xw��*��RP���*��`��*�~��*0����*p-0�Py��*libm.so.6/lib/x86_64-linux-gnulibm.so.6/lib/x86_64-linux-gnu/libpthread.so.0���*�y��*P����*�~��*�t��*�y��* ~��*`����*P����*@����*���*����*����*�����*�����*�����* ����*0����*�����*�����*p����*`����*p����*�����*�����*�����*Ѝ���*Ў���*����*��*�����*�����*���* ����*����*��*@���*�p���*	#~��*h�`��*؅��*�����*����*����*@�R���*H~��*���*(Բ��*����* �`��*}��*`|��*�T�R����*(�&���*�~��*(ͳ��*x{!�8~��*libpthread.so.0/lib/x86_64-linux-gnulibpthread.so.0/lib/x86_64-linux-gnu/libc.so.6ಠ�*p~��*�[젶*ع`��*�y��*�~��*���*�[젶*`\젶*P\젶*�[젶*\젶* \젶*�\젶*�\젶*�\젶*0\젶*@\젶*�[젶*�[젶*p\젶*�\젶*�[젶*�[젶*�\젶*]젶*�\젶*�\젶*�\젶* ]젶*]젶*\젶*@ಠ�*�㴠�*
���*h�`��*����*���Ⲡ�*�겠�*t����*@:J���*0���*ಠ�*��젶*0̠�* �`��*���*H���*���R����*�>���*�~��*�>���*�'젶*xx�G988 ���*libc.so.6/lib/x86_64-linux-gnulibc.so.6�t��*�~��*ع`��*�t��*�~��*ع`��*�y��*�~��*ع`��*�y��*�~��*ع`��*�~��*ع`��*�~��*ع`��*h�`��*�t��*�y��*�~��*ع`��*h�`��*�t��*�y��*�~��*ع`��*dT��*ui	$T��*�R���u�ja��*ui	va��*ii
�a��*����a��*����a��*����a��*����a��*��c	Aa��*ja��*ui	Aa��*�a��*��c	Ka��*^R���*ui	jR���*vi	vR���*ri	�R���*si	�R���*ti	�R���*ii
�R���*����R���*����R���*����R���*��c	�R���*��c	/R���*^R���*ui	/R���*vR���*ri	/R���*�R���*��c	9R���*^R���*ui	9R���*�R���*���/R���*���*ui	1I���*vi	=I���*ii
GI���*ri	SI���*si	_I���*ti	kI���*ii
uI���*ii
I���*ii
�I���*ii
�I���*ii
�I���*ii
�I���*����I���*����I���*����I���*����I���*����I���*����I���*����I���*����I���*���
J���*���J���*��� J���*���+J���*��c	+J���*��c	I���*=I���*ii
I���*�w>��*ui	�w>��*ii
�w>��*ii
�w>��*��c	@�~��*�~��*