10. [C / C++] ์ŠคํŠธ๋ฆผ๊ณผ ๋ฌธ์ž์—ด

2019. 5. 22. 06:18ใ†PROGRAMMING/C & C++

 

1. ๋ฐ์ดํ„ฐ์˜ ์ด๋™

 

๋ฐ์ดํ„ฐ์˜ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์€ ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์„ ๋œปํ•œ๋‹ค.

 

[ ์ž…๋ ฅ ] : ํ”„๋กœ๊ทธ๋žจ ์•ˆ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ํ˜๋Ÿฌ ๋“ค์–ด์˜ค๋Š” ๊ฒƒ.

๋Œ€ํ‘œ์ ์ธ ์ž…๋ ฅ์žฅ์น˜๋Š” ํ‚ค๋ณด๋“œ.

 

[ ์ถœ๋ ฅ ] : ํ”„๋กœ๊ทธ๋žจ ๋ฐ–์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ํ˜๋Ÿฌ ๋‚˜๊ฐ€๋Š” ๊ฒƒ.

๋Œ€ํ‘œ์ ์ธ ์ถœ๋ ฅ ์žฅ์น˜๋Š” ๋ชจ๋‹ˆํ„ฐ.

 


 

2. ์ŠคํŠธ๋ฆผ

 

ํ”„๋กœ๊ทธ๋žจ์ƒ์—์„œ ๋ชจ๋‹ˆํ„ฐ์™€ ํ‚ค๋ณด๋“œ๋ฅผ ๋Œ€์ƒ์œผ๋กœ

๋ฐ์ดํ„ฐ๋ฅผ ์ž…์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด์„œ

์ด๋“ค์„ ์—ฐ๊ฒฐ์‹œ์ผœ ์ฃผ๋Š” ๋‹ค๋ฆฌ ์—ญํ• ์„ ํ•˜๋Š” ๋งค๊ฐœ์ฒด.

๋‹จ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ๋ฐ์ดํ„ฐ์˜ ์ „์†ก์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

 

 

์ŠคํŠธ๋ฆผ์€ ์šด์˜์ฒด์ œ์—์„œ ์ œ๊ณตํ•˜๋Š”

์†Œํ”„ํŠธ์›จ์–ด๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š” ๊ฐ€์ƒ์˜ ๋‹ค๋ฆฌ์ด๋‹ค.

๋‹ค์‹œ ๋งํ•ด์„œ,

์šด์˜์ฒด์ œ๋Š” ์™ธ๋ถ€์žฅ์น˜์™€ ํ”„๋กœ๊ทธ๋žจ๊ณผ์˜ ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹ ์˜ ๋„๊ตฌ๊ฐ€ ๋˜๋Š” ์ŠคํŠธ๋ฆผ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.

 

์ฝ˜์†” ์ž…์ถœ๋ ฅ์„ ์œ„ํ•œ '์ž…๋ ฅ ์ŠคํŠธ๋ฆผ'๊ณผ '์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ'์€

ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๊ณ , ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๋ฉด ์ž๋™์œผ๋กœ ์†Œ๋ฉธ๋˜๋Š” ์ŠคํŠธ๋ฆผ์ด๋‹ค.

stdin : ํ‘œ์ค€ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ / ํ‚ค๋ณด๋“œ ๋Œ€์ƒ์œผ๋กœ ์ž…๋ ฅ

stdout : ํ‘œ์ค€ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ / ๋ชจ๋‹ˆํ„ฐ ๋Œ€์ƒ์œผ๋กœ ์ถœ๋ ฅ

stderr : ํ‘œ์ค€ ์—๋Ÿฌ ์ŠคํŠธ๋ฆผ / ๋ชจ๋‹ˆํ„ฐ ๋Œ€์ƒ์œผ๋กœ ์ถœ๋ ฅ

 

 


 

 

3. '๋ฌธ์ž' ๋‹จ์œ„ ์ž…์ถœ๋ ฅ ํ•จ์ˆ˜

 

๋ฌธ์ž ์ถœ๋ ฅ ํ•จ์ˆ˜ : putchar() / fputc()

 

putchar()

์ธ์ž๋กœ ์ „๋‹ฌ๋œ ๋ฌธ์ž๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋กœ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜.

 

fputc()

putchar()ํ•จ์ˆ˜์™€ ๋™์ผ. ๋‹จ, 2๋ฒˆ์งธ ์ธ์ž์— ๋ฌธ์ž๋ฅผ ์ „์†กํ•  ์ŠคํŠธ๋ฆผ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

stdout๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ํŒŒ์ผ์„ ๋Œ€์ƒ์œผ๋กœ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.

 


 

๋ฌธ์ž ์ž…๋ ฅ ํ•จ์ˆ˜ : getchar() / fgetc()

 

getchar()

stdin์œผ๋กœ ํ‘œํ˜„๋˜๋Š” ํ‘œ์ค€ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์œผ๋กœ๋ถ€ํ„ฐ

ํ•˜๋‚˜์˜ ๋ฌธ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›์•„์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜.

 

fgetc()

getchar() ํ•จ์ˆ˜์™€ ๊ธฐ๋Šฅ์€ ๋™์ผ.

๋‹ค๋งŒ, ๋ฌธ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›์„ ์ŠคํŠธ๋ฆผ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 


 

 

4. '๋ฌธ์ž์—ด' ๋‹จ์œ„ ์ž…์ถœ๋ ฅ ํ•จ์ˆ˜

 

๋ฌธ์ž์—ด ์ถœ๋ ฅ ํ•จ์ˆ˜ : puts() / fputs()

ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•  ๋•Œ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜.

 

puts()๋Š” ์ž๋™์œผ๋กœ ๊ฐœํ–‰์ด ์ด๋ฃจ์–ด์ง€์ง€๋งŒ,

fputs()๋Š” ๋ณ„๋„์˜ ๊ฐœํ–‰ ์ž‘์—…์„ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค.

 


 

๋ฌธ์ž์—ด ์ž…๋ ฅ ํ•จ์ˆ˜ : gets() / fgets()

ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜.

fgets()์˜ ๋‘ ๋ฒˆ์งธ ์ธ์ž์—๋Š” ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๋‹ด์•„์ค€๋‹ค.

 

๋งˆ์ง€๋ง‰์— ๊ฐœํ–‰์ด ๋‘ ๋ฒˆ ์ด๋ฃจ์–ด์ง„ ์ด์œ ๋Š”

fgets() ํ•จ์ˆ˜๋Š” \n์„ ๋งŒ๋‚  ๋•Œ ๊นŒ์ง€ ๋ฌธ์ž์—ด์„ ์ฝ์–ด ๋“ค์ด๋Š”๋ฐ,

\n์„ ์ œ์™ธ์‹œํ‚ค๊ฑฐ๋‚˜ ๋ฒ„๋ฆฌ์ง€ ์•Š๊ณ  ๋ฌธ์ž์—ด์˜ ์ผ๋ถ€๋กœ ๋ฐ›์•„๋“ค์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 

 


 

 

5. ํ‘œ์ค€ ์ž…์ถœ๋ ฅ๊ณผ ๋ฒ„ํผ.

 

์ง€๊ธˆ๊นŒ์ง€ ๋ณธ ์ž…์ถœ๋ ฅ ํ•จ์ˆ˜๋“ค์„ ๊ฐ€๋ฆฌ์ผœ 'ํ‘œ์ค€ ์ž…์ถœ๋ ฅ ํ•จ์ˆ˜'๋ผ๊ณ  ํ•œ๋‹ค.

(printf, scanf๋„ ๋งˆ์ฐฌ๊ฐ€์ง€)

์ด๋Ÿฌํ•œ ํ‘œ์ค€ ์ž…์ถœ๋ ฅ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…์ถœ๋ ฅ ํ•˜๋Š” ๊ฒฝ์šฐ,

ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋“ค์€ ์šด์˜์ฒด์ œ๊ฐ€ ์ œ๊ณตํ•˜๋Š” '๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ'๋ฅผ ์ค‘๊ฐ„์— ํ†ต๊ณผํ•œ๋‹ค.

(๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ : ๋ฐ์ดํ„ฐ๋ฅผ ์ž„์‹œ๋กœ ๋ชจ์•„๋‘๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„)

ํ‚ค๋ณด๋“œ๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์„ ๊ฑฐ์ณ์„œ

์ž…๋ ฅ ๋ฒ„ํผ๋กœ ๋“ค์–ด๊ฐ€๋Š” ์‹œ์ ์€ ์—”ํ„ฐํ‚ค๊ฐ€ ๋ˆŒ๋ฆฌ๋Š” ์‹œ์ ์ด๋‹ค.

๊ทธ๋ž˜์„œ ์•„๋ฌด๋ฆฌ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅํ•ด๋„ ์—”ํ„ฐ ํ‚ค๊ฐ€ ๋ˆŒ๋ฆฌ๊ธฐ ์ „์—๋Š” fgetsํ•จ์ˆ˜๊ฐ€ ๋ฌธ์ž์—ด์„ ์ฝ์–ด ๋“ค์ด์ง€ ๋ชปํ•œ๋‹ค.

(์—”ํ„ฐ ํ‚ค๊ฐ€ ๋ˆŒ๋ฆฌ๊ธฐ ์ „์—๋Š” ์ž…๋ ฅ ๋ฒ„ํผ๊ฐ€ ๋น„์›Œ์ ธ ์žˆ๋‹ค)

 

 

๋ฒ„ํผ๋ง์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” '๋ฐ์ดํ„ฐ ์ „์†ก์˜ ํšจ์œจ์„ฑ' ๋•Œ๋ฌธ์ด๋‹ค.

๋”ฐ๋กœ ๋ฒ„ํผ๋ง ์—†์ด ํ‚ค๋ณด๋“œ๊ฐ€ ๋ˆŒ๋ฆด ๋•Œ๋งˆ๋‹ค ๋ˆŒ๋ฆฐ ๋ฌธ์ž์˜ ์ •๋ณด๋ฅผ ๋ชฉ์ ์ง€๋กœ ๋ฐ”๋กœ ์ด๋™์‹œํ‚ค๋Š” ๊ฒƒ๋ณด๋‹ค

์ค‘๊ฐ„์— ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ๋ฅผ ๋‘ฌ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๋ฐ ๋ฌถ์–ด์„œ ์ด๋™์‹œํ‚ค๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ด๊ณ  ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 


 

 

7. ๋ฒ„ํผ๋ฅผ ๋น„์šฐ๋Š” ํ•จ์ˆ˜

 

fflush(stdout) : ์ถœ๋ ฅ ๋ฒ„ํผ๋ฅผ ๋น„์šฐ๋Š” ํ•จ์ˆ˜.

์ถœ๋ ฅ๋ฒ„ํผ๊ฐ€ ๋น„์›Œ์ง„๋‹ค๋Š” ๊ฒƒ์€

์ถœ๋ ฅ๋ฒ„ํผ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฒ„ํผ๋ฅผ ๋– ๋‚˜์„œ ๋ชฉ์ ์ง€๋กœ ์ด๋™๋จ์„ ๋œปํ•œ๋‹ค.

 

์–ด๋– ํ•œ ์‹œ์Šคํ…œ์˜ ์–ด๋– ํ•œ ํ‘œ์ค€ ์ถœ๋ ฅ๋ฒ„ํผ๋ผ ํ• ์ง€๋ผ๋„

๋ฒ„ํผ์— ์ €์žฅ๋œ ๋‚ด์šฉ์ด ๋น„์›Œ์ง€๋ฉด์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชฉ์ ์ง€๋กœ ์ด๋™ํ•œ๋‹ค.

 

์ž…๋ ฅ๋ฒ„ํผ๋Š” ์–ด๋–ป๊ฒŒ ๋น„์šธ๊นŒ?

'์ž…๋ ฅ๋ฒ„ํผ์˜ ๋น„์›Œ์ง'์€ '์ถœ๋ ฅ๋ฒ„ํผ์˜ ๋น„์›Œ์ง'๊ณผ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

์ถœ๋ ฅ๋ฒ„ํผ์˜ ๋น„์›Œ์ง : ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชฉ์ ์ง€๋กœ ์ „์†ก๋จ.

์ž…๋ ฅ๋ฒ„ํผ์˜ ๋น„์›Œ์ง : ๋ฐ์ดํ„ฐ์˜ ์†Œ๋ฉธ.

 

while(getchar() != '\n');

\n์„ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ๋ฌธ์ž๋ฅผ ์ฝ์–ด๋“ค์ด๋Š” ํ•จ์ˆ˜๋ฅผ ์ƒˆ๋กญ๊ฒŒ ์ •์˜ํ•œ๋‹ค.

๋ฌผ๋ก  ๋น„์šฐ๋Š” ๋ชฉ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฝ์–ด๋“ค์ธ ๋ฌธ์ž๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.