CμΈμ΄ ν¨μ - printf ν¨μ, scanf ν¨μ
μλ νμΈμ. μμνμ λλ€.
ν¨μλ?
νλ‘κ·Έλλ°μμ ν¨μ(function)λ νλμ νΉλ³ν λͺ©μ μ μμ μ μννκΈ° μν΄ λ 립μ μΌλ‘ μ€κ³λ νλ‘κ·Έλ¨ μ½λμ μ§ν©μΌλ‘ μ μν μ μμ΅λλ€. C νλ‘κ·Έλ¨μ μ΄λ¬ν CμΈμ΄ ν¨μλ€λ‘ ꡬμ±λλ©° ν¬ν¨λ ν¨μλ€μ μ¬μ©νμ¬ νλ‘κ·Έλ¨μ λͺ©μ μ λ¬μ±νκ² λ©λλ€.
CμΈμ΄ ν¨μλ ν¬κ² νμ€ ν¨μμ μ¬μ©μ ν¨μλ‘ κ΅¬λΆν μ μμ΅λλ€.
ν¨μλ₯Ό μ¬μ©νλ μ΄μ
CμΈμ΄ ν¨μλ₯Ό μ¬μ©νλ κ°μ₯ ν° μ΄μ λ λ°λ‘ λ°λ³΅μ μΈ νλ‘κ·Έλλ°μ νΌν μ μκΈ° λλ¬Έμ λλ€. νλ‘κ·Έλ¨μμ νΉμ μμ μ μ¬λ¬λ² λ°λ³΅ν΄μΌ ν λλ ν΄λΉ μμ μ μννλ ν¨μλ₯Ό μμ±νλ©΄ λ©λλ€. κ·Έλ¦¬κ³ μ νλ‘κ·Έλ¨μ΄ νμν λλ§λ€ μμ±ν ν¨μλ₯Ό νΈμΆνλ©΄ ν΄λΉ μμ μ λ°λ³΅ν΄μ μνΌν μ μμ΅λλ€.
λν, νλ‘κ·Έλ¨μ μ¬λ¬ κ°μ ν¨μλ‘ λλμ΄ μμ±νλ©΄, λͺ¨λνλ‘ μΈν΄ μ 체μ μΈ μ½λμ κ°λ μ±μ΄ μ’μμ§λλ€. κ·Έλ¦¬κ³ νλ‘κ·Έλ¨μ λ¬Έμ κ° λ°μνκ±°λ κΈ°λ₯μ λ³κ²½μ΄ νμν λμλ μμ½κ² μ μ§λ³΄μλ₯Ό ν μ μμ΅λλ€.
ν¨μμ μ μ
CμΈμ΄μμ μ¬μ©μ μ μ ν¨μλ₯Ό μ μνλ λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
- λ°ν νμ (return type) : ν¨μκ° λͺ¨λ μμ μ λ§μΉκ³ λ°ννλ λ°μ΄ν°μ νμ μ λͺ μν©λλ€.
- ν¨μ μ΄λ¦ : ν¨μλ₯Ό νΈμΆνκΈ° μν μ΄λ¦μ λͺ μν©λλ€.
- 맀κ°λ³μ λͺ©λ‘(parameters) : ν¨μ νΈμΆ μμ μ λ¬λλ μΈμμ κ°μ μ μ₯ν λ³μλ€μ λͺ μν©λλ€.
- ν¨μ λͺΈμ²΄ : ν¨μμ κ³ μ κΈ°λ₯μ μννλ λͺ λ Ήλ¬Έμ μ§ν©μ λλ€.
ν¨μ νΈμΆ μμλ μ¬λ¬ κ°μ μΈμλ₯Ό μ λ¬ν μ μμ§λ§, ν¨μκ° λ°νν μ μλ κ°μ 1κ°λ₯Ό λμ§ λͺ»ν©λλ€. λν, ν¨μμ νΉμ±μ λ°λΌ μΈμλ λ°νκ°μ΄ νλλ μλ ν¨μμ‘° μ‘΄μ¬ν μ μμ΅λλ€.
λ€μ μμ μμλ μΈμλ‘ μ λ¬λ°μ λ μ μ€μμ λ ν° μλ₯Ό λ°ννλ bigNum() ν¨μλ₯Ό μ μνμ¬ μ¬μ©ν©λλ€.
ν¨μμ μν μ μΈ
CμΈμ΄μμ ν¨μλ₯Ό μ μν λλ κ·Έ μμΉκ° λ§€μ° μ€μν©λλ€. λ€μ μμ λ μμ μ΄ν΄λ³Έ μμ μμ ν¨μ μ μμ μμΉλ§μ λ°κΎΌ μμ μ λλ€.
CμΈμ΄μμλ κ°μ₯ λ¨Όμ main() ν¨μκ° μ»΄νμΌλ¬μ μν΄ μ»΄νμΌλ©λλ€. μμ μμ μμ μ»΄νμΌλ¬λ main() ν¨μμ λ±μ₯νλ bigNum() ν¨μλ₯Ό μμ§ μμ§ λͺ»νκΈ° λλ¬Έμ μ»΄νμΌ μ€λ₯λ₯Ό λ°μμν΅λλ€. λ°λΌμ μ»΄νμΌλ¬μ bigNum() ν¨μλ λμ€μ μ μλμ΄ μλ€κ³ μλ €μ€μΌν©λλ€. κ·Έ μν μ νλ κ²μ΄ λ°λ‘ ν¨μμ μν(prototype) μ μΈμ λλ€.
μμ κ°μ΄ μ°¨λ‘λλ‘ ν λ²μ μ»΄νμΌνλ λ°©μμ λ¨μΌ ν¨μ€(one pass)μ»΄νμΌ λ°©μμ΄λΌκ³ ν©λλ€. νμ§λ§ νλμ¨μ΄μ λ°λ¬λ‘ μ»΄νμΌλ¬μ λ°λΌ μ¬λ¬ λ²μ κ±Έμ³ μ»΄νμΌνλ λ€μ€ ν¨μ€(multi-pass) λ°©μμ΄ λ§μμ§κ³ μμ΅λλ€.
λ€μ€ ν¨μ€ λ°©μμ μ»΄νμΌλ¬μμλ ν¨μμ μνμ μ μΈνμ§ μμλ μ»΄νμΌ μ€λ₯λ₯Ό λ°μμν€μ§ μμ΅λλ€. νμ§λ§ μ€λλ μ»΄νμΌλ¬λ λλΆλΆ λ¨μΌ ν¨μ€ λ°©μμΌλ‘ μ»΄νμΌνλ―λ‘ Cνμ€μμλ μ¬μ ν ν¨μμ μνμ μ μνκ³ μμ΅λλ€.
ν¨μμ μν μ μΈμ λ€μκ³Ό κ°μ λ°©μμΌλ‘ μ μΈλ©λλ€.
λ€μ μμ λ μμ μ΄ν΄λ³Έ μμ μ ν¨μμ μν μ μΈμ μΆκ°ν μμ μ λλ€. μ΄λ κ² ν¨μμ μνμ main() ν¨μ μμ 미리 μ μΈλμ΄μΌ ν©λλ€.
CμΈμ΄ νμ€ μ μΆλ ₯ ν¨μ
μ¬μ©μκ° νλ‘κ·Έλ¨κ³Ό λννκΈ° μν΄ μ¬μ©νλ ν¨μλ₯Ό μ μΆλ ₯ ν¨μ λλ I/O ν¨μλΌκ³ ν©λλ€. printf() ν¨μμ scanf() ν¨μλ CμΈμ΄ νμ€ μ μΆλ ₯ ν¨μ μ€μμλ κ°μ₯ λ§μ΄ μ¬μ©λλ λνμ μΈ μ μΆλ ₯ ν¨μμ λλ€.
printf() ν¨μ
printf() ν¨μλ CμΈμ΄μ νμ€ μΆλ ₯ ν¨μλ‘ μ¬λ¬ μ’ λ₯μ λ°μ΄ν°(data)λ₯Ό λ€μν μμμ λ§μΆ° μΆλ ₯ν μ μκ² ν΄μ€λλ€. printf() ν¨μμ μνμ λ€μκ³Ό κ°μ΅λλ€.
printf() ν¨μμ fλ formattedμ μ½μμ΄λ©°, μμνλ μΆλ ₯μ μ§μνλ€λ μλ―Έμ λλ€. μ΄ ν¨μλ μΆλ ₯ν λ°μ΄ν°λ₯Ό μ΄λ€ μμμ λ§μΆ° μΆλ ₯ν μ§ μμ μ§μ μ(format specifier)λ₯Ό ν΅ν΄ μ§μ μ§μ ν μ μμ΅λλ€.
μμ μμ μμλ intν λ°μ΄ν°λ₯Ό λνλ΄κΈ° μν΄μ '%d'λΌλ μμ μ§μ μλ₯Ό μ¬μ©νμ΅λλ€. λν, μ€ λ°κΏμ '\n'λΌλ μ΄μ€μΌμ΄ν μνμ€λ₯Ό μ¬μ©νμ¬ νννκ³ μμ΅λλ€.
μ΄μ€μΌμ΄ν μνμ€(escape sequance)
μμ μμ μ 첫 λ²μ§Έ printf() ν¨μμ λμ¨ '\n'κ³Ό κ°μ λ¬Έμλ₯Ό μ΄μ€μΌμ΄ν μνμ€λΌκ³ ν©λλ€. μ΄λ¬ν μ΄μ€μΌμ΄ν μνμ€λ νλ‘κ·Έλ¨μ κ²°κ³Όκ° νλ©΄μ μΆλ ₯λ λ μ¬μ©νκ² λ νΉμν λ¬Έμλ₯Ό μν΄ λ§λ€μ΄μ‘μ΅λλ€.
CμΈμ΄μμ μ¬μ©λλ μ΄μ€μΌμ΄ν μνμ€λ λ€μκ³Ό κ°μ΅λλ€.
μ΄μ€μΌμ΄ν μνμ€ μ€μμ '\f'μ '\v'λ νλ¦°ν°λ‘ μΆλ ₯ν λμλ§ μλ―Έλ₯Ό κ°μ§λλ€.
μμ μ§μ μ(format speccifier)
μμ μμ μμ λ λ²μ§Έ printf() ν¨μμ λμ¨ '%d'μ κ°μ λ¬Έμλ₯Ό μμμ§μ μλΌκ³ ν©λλ€. printf() ν¨μμμλ μ΄λ¬ν μμ μ§μ μλ₯Ό ν΅ν΄ μΆλ ₯ν λ°μ΄ν°μ μμμ μ¬μ©μκ° μ§μ μ§μ ν μ μμ΅λλ€.
CμΈμ΄μμ μ¬μ©λλ λνμ μΈ μμ μ§μ μλ λ€μκ³Ό κ°μ΅λλ€.
μμ μ§μ μμ λμ μ¬μ©
μ¬λ¬κ°μ μμ μ§μ μλ₯Ό λμμ μ¬μ©νμ¬, μ¬λ¬ κ°μ λ°μ΄ν°μ μλ‘ λ€λ₯Έ μμμ μ§μ ν΄ μΆλ ₯ν μ μμ΅λλ€. λ¨, μ΄λ μμ μ§μ μμ μμμ νμ μ μΆλ ₯ν λ°μ΄ν°μ μμμ νμ κ³Ό λ°λμ μΌμΉν΄μΌ ν©λλ€.
μΆλ ₯ νλμ ν μ€μ
μμ μ§μ μμ '%d'κΈ°νΈμ νμ μ λνλ΄λ μλ¬Έμ μ¬μ΄μ μ«μλ₯Ό μΆκ°νμ¬ μΆλ ₯λλ νλμ νμ μ§μ μ€μ ν μ μμ΅λλ€. λ΄λΆμ μ«μλ μ€λ₯Έμͺ½ μ λ ¬μ΄ κΈ°λ³Έμ΄λ©° μ«μ μμ '-' κΈ°νΈλ₯Ό λΆμ΄λ©΄ μΌμͺ½ μ λ ¬λ‘ λ³κ²½λ©λλ€.
λν, μ«μ μμ '+' κΈ°νΈλ₯Ό λΆμ΄λ©΄ μ«μλ₯Ό μ€λ₯Έμͺ½ μ λ ¬ν μνμμ μμμλ '+' κΈ°νΈλ₯Ό, μμμλ '-' κΈ°νΈλ₯Ό λΆμ¬μ μΆλ ₯ν©λλ€. μ΄λ μμ λΆλΆμ μ«μλ μΆλ ₯λλ μμμ μλ¦Ώμλ₯Ό λͺ μν©λλ€.
scanf() ν¨μ
scanf() ν¨μλ CμΈμ΄μ νμ€ μ λ ₯ ν¨μλ‘ μ¬μ©μλ‘λΆν° λ€μν λ°μ΄ν°λ₯Ό λ€μν μμμ λ§μΆ° μ λ ₯λ°μ μ μκ² ν΄μ€λλ€. scanf() ν¨μμ μνμ λ€μκ³Ό κ°μ΅λλ€.
scanf() ν¨μμ fλ formattedμ μ½μμ΄λ©° μμνλ μ λ ₯μ λ°λλ€λ μλ―Έμ λλ€. μ΄ ν¨μλ μ λ ₯λ°μ λ°μ΄ν°λ₯Ό μ΄λ€ μμμΌλ‘ λ³νν μ§ μμ μ§μ μ(format specifier)λ₯Ό ν΅ν΄ μ§μ μ§μ ν μ μμ΅λλ€.
λ€μ μμ λ μ¬μ©μλ‘λΆν° μ μλ₯Ό λ λ² μ λ ₯λ°μμ κ·Έ ν©μ μΆλ ₯νλ μμ μ λλ€.
CμΈμ΄μμ λ°μ΄ν°λ₯Ό μ λ ₯λ°μΌλ €λ©΄ μ λ ₯λ°κ³ μ νλ λ°μ΄ν°μ νμ μ ν΄λΉνλ ν¬κΈ°μ λ©λͺ¨λ¦¬λ₯Ό μ°μ ν λΉλ°μμΌ ν©λλ€. μ΄μ²λΌ λ°μ΄ν°λ₯Ό μ μ₯νκΈ° μν΄ νλ‘κ·Έλ¨μ μν΄ μ΄λ¦μ ν λΉλ°μ λ©λͺ¨λ¦¬ 곡κ°μ λ³μ(variable)λΌκ³ ν©λλ€.
μμ μμ μμ scanf() ν¨μμ ν¬ν¨λ '&' κΈ°νΈλ μ£Όμ μ°μ°μ(&)λΌκ³ ν©λλ€. μ΄ μ£Όμ μ°μ°μλ μ λ ₯λ°μ λ°μ΄ν°λ₯Ό λ€μ λμ€λ λ³μμ μ μ₯νλΌλ μλ―Έμ λλ€.
μμ μ§μ μμ λμ μ¬μ©
μ¬λ¬ κ°μ μμ μ§μ μλ₯Ό λμμ μ¬μ©νμ¬ μ¬λ¬ λ°μ΄ν°λ₯Ό μλ‘ λ€λ₯Έ μμμΌλ‘ ν λ²μ μ λ ₯λ°μ μ μμ΅λλ€. λ¨, μ΄λμλ μμ μ§μ μμ μμμ μ μ₯ν λ³μμ μμκ° λ°λμ κ°μμΌ ν©λλ€. μ λ ₯λ°λ λ°μ΄ν°μ ꡬλΆμ 곡백(μ€ λ°κΏ, ν, λμ΄μ°κΈ° λ±)μ κΈ°μ€μΌλ‘ μΌμ΅λλ€.
λ€μ μμ λ μ¬μ©μλ‘λΆν° λ κ°μ μ μλ₯Ό ν λ²μ μ λ ₯λ°μ κ°κ° 8μ§μμ 16μ§μλ‘ μΆλ ₯νλ μμ μ λλ€.
doubleν μ€μμ μ λ ₯
scanf() ν¨μλ‘ floatν μ€μλ₯Ό μ λ ₯λ°μ λλ μμ μ§μ μλ‘ '%f'λ₯Ό μ¬μ©νλ©΄ λ©λλ€. νμ§λ§ doubleν μ€μλ₯Ό μ λ ₯λ°μ λλ printf() ν¨μμμμ²λΌ '%f'λ₯Ό μ¬μ©νλ©΄ μλ©λλ€.
scanf() ν¨μλ‘ doubleν μ€μλ₯Ό μ λ ₯λ°μ λλ λ°λμ '%lf' μμ μ§μ μλ₯Ό μ¬μ©ν΄μΌ μ νν κ°μΌλ‘ μ λ ₯λ°μ μ μμ΅λλ€. λ€μ μμ λ μ¬μ©μλ‘λΆν° λ κ°μ μ€μλ₯Ό ν λ²μ μ λ ₯λ°μ μΆλ ₯νλ μμ μ λλ€.
μ€λ ν¬μ€ν μμλ μ΄λ κ² CμΈμ΄ ν¨μμΈ printf() ν¨μμ scanf() ν¨μμ λν΄ μμ보μμ΅λλ€. CμΈμ΄ ν¨μμΈ printf() ν¨μμ scanf() ν¨μλ₯Ό μ μΈνκ³ λ λ¬Έμ μ μΆλ ₯ ν¨μ, λ¬Έμμ΄ μ μΆλ ₯ ν¨μ, 맀ν¬λ‘ ν¨μ λ± λ€μν ν¨μλ€μ΄ μμΌλ μ΄ μ μ μ°Έκ³ νμλ©΄ μ’κ² μ΅λλ€ :)
CμΈμ΄ ν¨μλ§κ³ λ μ μ΄λ¬Έ, μ°μ°μ, λ°°μ΄, ν¬μΈν° λ± CμΈμ΄μ λν΄μ μκ³ μΆμΌμ λΆμ΄κ±°λ λ λμκ° CμΈμ΄λ‘ νλ‘κ·Έλλ°μ λ°°μ΄ ν νλ‘κ·Έλλ¨Έλ‘ μ§μΆμ΄ λͺ©μ μ΄μ λΆλ€μ μλμ λ€μ΄λ² νΌμ ν΅ν΄ κ°λ¨νκ²λΌλ λ¨κ²¨μ£Όμλ©΄ μ κ° μ§μ λΉ λ₯΄κ³ μ ννκ² μλ΄ λμλλ¦¬κ² μ΅λλ€.
CμΈμ΄ ν¨μμ λν κΈ μ¬κΈ°μ λ§μΉκ² μ΅λλ€.
κ°μ¬ν©λλ€ :)
http://it-kgedu1.kr/support/edu_consult.php
β² CμΈμ΄ ν¨μμ λν κΆκΈμ ν΄κ²°μ² β²
'ICT > νλ‘κ·Έλλ°' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μλ°νμ JAVAνλ‘κ·Έλλ° κ΅μ‘κ³Όμ (feat. KGμμ΄ν°λ± ν¬) (0) | 2022.11.25 |
---|---|
μλ°νλ‘κ·Έλ¨ - μλ°μ κΈ°μ΄μ§μ (0) | 2022.06.09 |
CμΈμ΄ νλ‘κ·Έλ¨ - CμΈμ΄μ κΈ°μ΄λ₯Ό μμ보μ (0) | 2022.06.07 |
νμ΄μ¬ κΈ°μ΄κ³΅λΆ - 체κ³μ μΈ κ³΅λΆ κ³νμΈμ°κΈ° (0) | 2022.06.06 |
μλλ‘μ΄λ νλ‘κ·Έλλ° - μλ°νμ© (0) | 2021.10.09 |