PROGRAMMING/C & C++

14. [C / C++] ํŒŒ์ผ ์ž…์ถœ๋ ฅ

๐’ฎ๐’ฎ๐ผ๐’ฉ_0 2019. 6. 3. 04:58

 

1. ํŒŒ์ผ๊ณผ ์ŠคํŠธ๋ฆผ

 

์ž…์ถœ๋ ฅ ๋Œ€์ƒ์ด ์ฝ˜์†”์ผ ๋•Œ ์šด์˜์ฒด์ œ๊ฐ€ ์ž…์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์„ ์ž๋™ ์ƒ์„ฑ ๋ฐ ์†Œ๋ฉธ์‹œ์ผœ์ค€๋‹ค.

(scanf, printf ๋“ฑ๋“ฑ)

 

์ž…์ถœ๋ ฅ ๋Œ€์ƒ์ด ํŒŒ์ผ์ด๋ผ๋ฉด, ์‚ฌ์šฉ์ž๊ฐ€ ์šด์˜์ฒด์ œ์—๊ฒŒ ์ŠคํŠธ๋ฆผ ์ƒ์„ฑ๊ณผ ์†Œ๋ฉธ์„ ์š”์ฒญํ•ด์•ผ ํ•œ๋‹ค.

(์ŠคํŠธ๋ฆผ - ์šด์˜์ฒด์ œ์— ์˜ํ•ด์„œ ํ˜•์„ฑ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ ์ธ ์ƒํƒœ)

 

 


 

 

2. ์ŠคํŠธ๋ฆผ ํ˜•์„ฑ๊ณผ FILE ๊ตฌ์กฐ์ฒด

 

fopen_s(FILE** stream, const char* filename, const char* mode)

์ŠคํŠธ๋ฆผ์„ ํ˜•์„ฑํ•  ๋•Œ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜.

 

์ฒซ ๋ฒˆ์งธ ์ธ์ž - ์ŠคํŠธ๋ฆผ์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ธฐ ์œ„ํ•œ FILE ๊ตฌ์กฐ์ฒด.

๋‘ ๋ฒˆ์งธ ์ธ์ž - ์ŠคํŠธ๋ฆผ์„ ํ˜•์„ฑํ•  ํŒŒ์ผ์˜ ์ด๋ฆ„.

์„ธ ๋ฒˆ์งธ ์ธ์ž - ํ˜•์„ฑํ•  ์ŠคํŠธ๋ฆผ์˜ ์ข…๋ฅ˜์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ์ „๋‹ฌ.

 

์ด ํ•จ์ˆ˜๋Š” ํ•ด๋‹น ํŒŒ์ผ๊ณผ์˜ ์ŠคํŠธ๋ฆผ์„ ํ˜•์„ฑํ•˜๊ณ ,

์ŠคํŠธ๋ฆผ ์ •๋ณด๋ฅผ FILE๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜์— ๋‹ด์•„์„œ

๊ทธ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

( ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•ด์„œ ํŒŒ์ผ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ํŒŒ์ผ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฒŒ ๋˜๋ฏ€๋กœ,

FILE๊ตฌ์กฐ์ฒด๊ฐ€ ์–ด๋–ป๊ฒŒ ์ •์˜๋˜์–ด์žˆ๋Š”์ง€๊นŒ์ง€๋Š” ์•Œ ํ•„์š”๋Š” ์—†๋‹ค. )

 

 


 

 

3. ํŒŒ์ผ ์ถœ๋ ฅ (์ €์žฅํ•˜๊ธฐ)

 

ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ํด๋”๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

 

 

 

 

ํŒŒ์ผ ๊ฐœ๋ฐฉ ๋ชจ๋“œ

"'w" - ์ถœ๋ ฅ.(๋ฎ์–ด์“ฐ๊ธฐ). ๋Œ€์ƒ ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ƒˆ๋กœ ์ƒ์„ฑ.

"a" - ์ถœ๋ ฅ(์ด์–ด ์“ฐ๊ธฐ). ๋Œ€์ƒ ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ƒˆ๋กœ ์ƒ์„ฑ.

"r" - ์ž…๋ ฅ. ๋Œ€์ƒ ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ์—๋Ÿฌ.

 

t : ํ…์ŠคํŠธ ๋ชจ๋“œ. ์‚ฌ๋žŒ์ด ์‹๋ณ„ ๊ฐ€๋Šฅํ•œ ํ˜•์‹์œผ๋กœ ์ž…์ถœ๋ ฅ.

b : ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ชจ๋“œ. ํ…์ŠคํŠธ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๋Š” ํ˜•์‹์˜ ์ž…์ถœ๋ ฅ. (๋™์˜์ƒ, ์ด๋ฏธ์ง€, ์‚ฌ์šด๋“œ)

 

"rb" - ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹์œผ๋กœ ์ž…๋ ฅ.

"wb" - ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅ.

 

"rt" - ํ…์ŠคํŠธ ํ˜•์‹์œผ๋กœ ์ž…๋ ฅ. t ์ƒ๋žต ๊ฐ€๋Šฅ.

"wt" - ํ…์ŠคํŠธ ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅ. t ์ƒ๋žต ๊ฐ€๋Šฅ.

 

 

 

 

fopen_sํ•จ์ˆ˜๋Š” ์ŠคํŠธ๋ฆผ ์ƒ์„ฑ์— ์„ฑ๊ณต์„ ํ•˜๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์“ฐ๊ธฐ ๋ชจ๋“œ์— ๊ฐœ๋ฐฉ์— ์„ฑ๊ณตํ–ˆ๋‹ค๋ฉด, ํ•ด๋‹น ํŒŒ์ผ ์ŠคํŠธ๋ฆผ์— ์ €์žฅํ•  ๋‚ด์šฉ์„ ์ž…๋ ฅํ•ด์ค€๋‹ค.

 

์ƒ์„ฑํ•œ ์ŠคํŠธ๋ฆผ์€ ๋ฐ˜๋“œ์‹œ ์†Œ๋ฉธํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. 

ํŒŒ์ผ์„ ๋‹ซ์•„์ฃผ์ง€ ์•Š์œผ๋ฉด ํ• ๋‹น๋œ ์ฑ„๋กœ ๋‚จ์•„์žˆ๊ฒŒ ๋˜์–ด์„œ, ๊ทธ๋งŒํผ ์ž์›์†์‹ค์„ ์ดˆ๋ž˜ํ•œ๋‹ค.

fclose() ํ•จ์ˆ˜.

์šด์˜์ฒด์ œ๊ฐ€ ํ• ๋‹นํ•œ ์ž์›์„ ๋ฐ˜ํ™˜.

๋ฒ„ํผ๋ง ๋˜์—ˆ๋˜ ๋ฐ์ดํ„ฐ์˜ ์ถœ๋ ฅ.

 

 

 

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ €์žฅ์— ์„ฑ๊ณต์„ ํ–ˆ๋‹ค๋ฉด

๋ณ„๋„๋กœ ๋ฉ”๋ชจ์žฅ์„ ํŒŒ์ผ ์ƒ์„ฑํ•˜์ง€ ์•Š์•„๋„

์ž๋™์œผ๋กœ ๋ฉ”๋ชจ์žฅ ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜๊ณ , ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค.

 

 

 

 


 

 

4. ํŒŒ์ผ ์ž…๋ ฅ (๋ถˆ๋Ÿฌ์˜ค๊ธฐ)

 

๊ณผ์—ฐ ํŒŒ์ผ์—๋Š” null ๋ฌธ์ž๊ฐ€ ๊ธฐ๋ก๋˜์—ˆ์„๊นŒ?

์ €์žฅํ•œ ํŒŒ์ผ์„ ์ฝ์œผ๋ฉด์„œ ํ™•์ธํ•ด๋ณด์ž.

 

 

null ๋ฌธ์ž๋Š” ๊ธฐ๋ก๋˜์ง€ ์•Š์œผ๋ฉฐ,

๋ฌดํ•œ๋ฃจํ”„์— ๋น ์ ธ์„œ ์ฝ˜์†” ์Šคํฌ๋กค์ด ๊ณ„์† ๋‚ด๋ ค๊ฐ„๋‹ค.

 

 

ํŒŒ์ผ์„ ์ฝ์–ด๋“ค์ผ ๋•Œ๋Š” EOF๋ฅผ ํ†ตํ•ด์„œ ์กฐ๊ฑด์„ ๊ฑธ๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.

 

 

 

 fgets ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐœํ–‰ ๋‹จ์œ„๋กœ ๋ฌธ์ž์—ด์„ ์ฝ์–ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค.