printf와 유사한 print 함수 만들기 ---- || 이름 || 소스 || 코딩 시간 || || 이상규 || [OurMajorLangIsCAndCPlusPlus/print/이상규] || 2시간 || || 이도현 || [OurMajorLangIsCAndCPlusPlus/print/이도현] || 3시간 30분 || || 하기웅 || [OurMajorLangIsCAndCPlusPlus/print/하기웅] || 2시간 30분 || || [조현태] || [OurMajorLangIsCAndCPlusPlus/print/조현태] || ? || || 허준수 || [OurMajorLangIsCAndCPlusPlus/print/허준수] || 3시간 || || 김민경 || [OurMajorLangIsCAndCPlusPlus/print/김민경] || 진행중 || || 김상섭 || [OurMajorLangIsCAndCPlusPlus/print/김상섭] || 2시간(열라 물어보면서..ㅡㅜ) || ---- 함수 원형 {{{~cpp void print(const char *, ...); }}} printf, scanf 계열의 함수 사용 금지 C++ 라이브러리 사용 금지 출력은 fputchar, fputs 등 사용 === 요구사항 1 === printf와 같이 %d, %s, %f를 통해 정수(int), 문자열(char*), 실수(double)를 출력할 수 있다. 예 {{{~cpp int a = 10; char *b = "example"; double c = 10.5 print("number: %d, string: %s, real number: %f\n", a, b, c); }}} 결과 {{{~cpp number: 10, string: example, real number: 10.5 }}} === 요구사항 2 === @d(정수 배열), @s(문자열 배열), @f(실수 배열)를 통해 배열을 출력할 수 있다. 배열의 경우 배열 포인터와 배열의 길이를 전달인자로 넘긴다. 배열 출력 형식은 { 원소1, 원소2, ... } 예 {{{~cpp int a[3] = { 1, 2, 3 }; char *b[2] = { "abc", "def" }; print("array: @d\n", a, 3); print("array: @s\n", b, 2); }}} 결과 {{{~cpp array: { 1, 2, 3 } array: {abc, def } }}} === 요구사항 3 === %3d와 같은 정렬 기능을 제공한다. 항상 우측정렬, 길이가 넘어가면 그대로 출력 예 {{{~cpp int a = 123; int b = 12345; int c = 12345678; print("number: %5d\n", a); print("number: %5d\n", b); print("number: %5d\n", c); }}} 결과 {{{~cpp number: __123 number: 12345 number: 12345678 }}} ('_'는 공백을 의미 실재로는 출력 안됨) ---- [OurMajorLangIsCAndCPlusPlus]