2. ํฌ๋งท ์คํธ๋ง
<๊ฐ์>
โ ํฌ๋งท ์คํธ๋ง์ด๋?
ํฌ๋งท์คํธ๋ง(format string)์ด๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋ก๋ถํฐ ์
๋ ฅ์ ๋ฐ์๋ค์ด๊ฑฐ๋ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํ์ฌ ์ฌ์ฉํ๋ ํ์์ด๋ค. ํฌ๋งท์คํธ๋ง์ ์ฌ์ฉํ๋ ํจ์์ ๋ํด ํ์์ด๋ ํํ๋ฅผ ์ง์ ํด์ฃผ๋ ๋ฌธ์์ด์ ์๋ฏธํ๋ค. C ์ธ์ด์์๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ธฐํธ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ์๋ค.
%d: ์ ์ํ 10์ง์ ์์
%f: ์ค์ํ ์์
%lf: ์ค์ํ ์์
%c: ๋ฌธ์๊ฐ
%s: ๋ฌธ์ ์คํธ๋ง
%u: ์์ ์ ์(10์ง์)
%o: ์์ ์ ์(8์ง์)
%x: ์์ ์ ์(16์ง์)
%n: ์ฐ์ธ ์ด ๋ฐ์ดํธ ์
%n ์ ์ด์ ๊น์ง ์
๋ ฅ๋์๋ ๋ฌธ์์ด์ ๊ธธ์ด(Byte)์ ๋งํผ ํด๋น ๋ณ์์ ์ ์ฅ์ํค๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ด์ฉ๋ ๋ณ์กฐ ๊ฐ๋ฅํ๋ฏ๋ก Format String ์ทจ์ฝ์ ์์ ํต์ฌ์ด๊ธฐ๋ ํจ. ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๋ณ์กฐ์ํค๊ณ ์ถ์ ๊ฐ์ ๊ธธ์ด๋งํผ ๋ง๋ ํ %n์ ์จ์ฃผ๊ฒ ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ์์ ๊ณต๊ฒฉ์๊ฐ ์ํ๋ ๊ฐ์ ๋ฃ์ ์ ์๊ฒ ๋จ
โ ํฌ๋งท ์คํธ๋ง ๋ฒ๊ทธ๋?
ํฌ๋งท ์คํธ๋ง ๋ฒ๊ทธ๋ ์ทจ์ฝ์ ๊ณต๊ฒฉ์ ์ฌ์ฉ๋ ์ ์๋ ๋ณด์ ์ทจ์ฝ์ ์ผ๋ก์จ 1989๋ ๊ฒฝ์ ๋ฐ๊ฒฌ๋์๋ค. ์ด์ ์๋ ์ํํ์ง ์๋ค๊ณ ์ฌ๊ฒจ์ก์ง๋ง, ํฌ๋งท ์คํธ๋ง ์ต์คํ๋ก์์ ํ๋ก๊ทธ๋จ์ ์ถฉ๋์ํค๊ฑฐ๋ ์ ์์ ์ธ ์ฝ๋๋ฅผ ์คํ ์ํค๋๋ฐ ์ฌ์ฉ๋ ์ ์๋ค. ๋ฌธ์ ๋ ํฌ๋งทํ ์ ์ํํ๋ printf() ๊ฐ์ ํน์ ํ C ํจ์๋ค์์, ๊ฒ์ฌ๋์ง ์์ ์ฌ์ฉ์ ์ ๋ ฅ์ ํฌ๋งท ์คํธ๋ง ํ๋ผ๋ฏธํฐ๋ก ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก๋ถํฐ ๋์จ๋ค. ์ ์์ ์ธ ์ฌ์ฉ์๋ %s์ %x ํฌ๋งท ํ ํฐ๋ค์ ์ฝ ์คํ ๋๋ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ๋ฅํ ๋ค๋ฅธ ์์น์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ด๊ฒ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ค. ๋ํ %n ํฌ๋งท ํ ํฐ์ ์ฌ์ฉํด์ ์์์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์์์ ์ธ ์์น๋ก ์ธ ์ ์๋๋ฐ, ์ด๊ฒ์ printf() ์ ๋น์ทํ ํจ์๋ค์ด ๋ง์ ๋ฐ์ดํธ๋ค์ ์คํ์ ์ ์ฅ๋ ์ฃผ์์ ์ฐ๊ฒ ํ๋ค.
์ถ์ฒ [์ํค๋ฐฑ๊ณผ]
https://ko.wikipedia.org/wiki/%EB%B2%84%ED%8D%BC_%EC%98%A4%EB%B2%84%ED%94%8C%EB%A1%9C
โ ์ ๊ฒ๋ด์ฉ
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํฌ๋งท ์คํธ๋ง ์ทจ์ฝ์ ์กด์ฌ ์ฌ๋ถ ์ ๊ฒ
โ ์ ๊ฒ๋ชฉ์
๊ณต๊ฒฉ์์ ํฌ๋งท ์คํธ๋ง ์ทจ์ฝ์ ์ ํตํ ์ ์์ ์ธ ํ์๋ฅผ ์ฐจ๋จํ๊ธฐ ์ํจ
โ ๋ณด์์ํ
C์ธ์ด๋ก ๋ง๋๋ ํ๋ก๊ทธ๋จ ์ค ๋ณ์์ ๊ฐ์ ์ถ๋ ฅํ๊ฑฐ๋ ์ ๋ ฅ๋ฐ์ ๋ ์ ๋ ฅ๋ฐ์ ๊ฐ์ ์กฐ์ํ์ฌ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ ์์น๋ฅผ ๋ฐํ๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๋ณ์กฐํ์ฌ ์์คํ ์ ๊ด๋ฆฌ์ ๊ถํ์ ํ๋ํ ์ ์์
<์ ๊ฒ๋์ ๋ฐ ํ๋จ๊ธฐ์ค>
โ ๋์
์น ์ ํ๋ฆฌ์ผ์ด์ ์์ค์ฝ๋, ์น ๊ธฐ๋ฐ C/S ํ๋ก๊ทธ๋จ
โ ํ๋จ๊ธฐ์ค
์ํธ : ํฌ๋งท ์คํธ๋ง ๋ฒ๊ทธ๋ฅผ ๋ฐ์์ํค๋ ๋ฌธ์์ด ์ ๋ ฅ ์ ๊ฒ์ฆ ๋ก์ง์ด ์กด์ฌํ์ฌ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๋ ๊ฒฝ์ฐ
์ทจ์ฝ : ํฌ๋งท ์คํธ๋ง ๋ฒ๊ทธ๋ฅผ ๋ฐ์์ํค๋ ๋ฌธ์์ด ์ ๋ ฅ ์ ๊ฒ์ฆ ๋ก์ง์ด ๋ฏธํกํ์ฌ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ
โ ์กฐ์น๋ฐฉ๋ฒ
์น ์๋ฒ ํ๋ก๊ทธ๋จ์ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๊ณ ํฌ๋งท ์คํธ๋ง ๋ฒ๊ทธ๋ฅผ ๋ฐ์์ํค๋ ๋ฌธ์์ด์ ๋ํ ๊ฒ์ฆ ๋ก์ง ๊ตฌํ
<์ ๊ฒ ๋ฐ ์กฐ์น ์ฌ๋ก>
โ ์ ๊ฒ๋ฐฉ๋ฒ
Step 1) ์น ์ฌ์ดํธ์์ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ํ๋ผ๋ฏธํฐ ๊ฐ์ ์๋์ ๊ฐ์ ํจํด ์ ๋ ฅ ํ ์ ์ก ์ ๋ค๋ฅธ ๊ฐ์ ์ ๋ ฅํ์ ๋๋ ๋ฐ์ํ์ง ์๋ ์๋ฌ ๋ฐ์์ด๋ ๋ฉ์ถ๋ ๋ฑ ์ด์ ๋ฐ์์ ๋ณด์ด๋์ง ํ์ธ
ํจํด1 - %n%n%n%n%n%n%n%n%n%n // ์ํธ, ์ด์ ๋ฐ์ ์์
ํจํด2 - %s%s%s%s%s%s%s%s%s%s // ์ํธ, ์ด์๋ฐ์ ์์
ํจํด3 - %1!n!%2!n!%3!n!%4!n!%5!n!%6!n!%7!n!%8!n!%9!n!%10!n! // ์ํธ, ์ด์๋ฐ์ ์์
ํจํด4 - %1!s!%2!s!%3!s!%4!s!%5!s!%6!s!%7!s!%8!s!%9!s!%10!s! // ์ํธ, ์ด์๋ฐ์ ์์
ํจํด5 - %n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n %x%x%x%x%x%x%x%x%x%x%x%x // ์ํธ, ์ด์๋ฐ์ ์์