728x90

์ŠคํŠธ๋ฆผ

  • ์ŠคํŠธ๋ฆผ(stream)์ด๋ž€, ํ”„๋กœ๊ทธ๋žจ๊ณผ ์ž…์ถœ๋ ฅ์žฅ์น˜ ์‚ฌ์ด์—์„œ ์ž…์ถœ๋ ฅ์ž๋ฃŒ๋“ค์„ ์—ฐ๊ฒฐ์‹œ์ผœ ์ฃผ๋Š” ์—ญํ• 
  • ๋ชจ๋‹ˆํ„ฐ์™€ ํ‚ค๋ณด๋“œ ๊ฐ™์€ ์™ธ์žฅ๊ธฐ๊ธฐ๋Š” ํ”„๋กœ๊ทธ๋žจ๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ ์ด ๊ธฐ๊ธฐ๋“ค์„ ํ”„๋กœ๊ทธ๋žจ๊ณผ ์—ฐ๊ฒฐ์‹œ์ผœ ์ฃผ๋Š” ๋‹ค๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๊ณ  ์ด ๋‹ค๋ฆฌ ์—ญํ• ์„ ํ•˜๋Š” ๋งค๊ฐœ์ฒด๊ฐ€ ๋ฐ”๋กœ '์ŠคํŠธ๋ฆผ'์ด๋‹ค.

์ด๋ฆ„ ์ŠคํŠธ๋ฆผ์˜ ์ข…๋ฅ˜ ์ž…์ถœ๋ ฅ์žฅ์น˜
stdin ํ‘œ์ค€ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ ํ‚ค๋ณด๋“œ ๋Œ€์ƒ์œผ๋กœ ์ž…๋ ฅ
stdout ํ‘œ์ค€ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ ๋ชจ๋‹ˆํ„ฐ ๋Œ€์ƒ์œผ๋กœ ์ถœ๋ ฅ
stderr ํ‘œ์ค€ ์—๋Ÿฌ ์ŠคํŠธ๋ฆผ ๋ชจ๋‹ˆํ„ฐ ๋Œ€์ƒ์œผ๋กœ ์ถœ๋ ฅ

๋ฒ„ํผ

  • ์ŠคํŠธ๋ฆผ์€ ๋‚ด๋ถ€์— ๋ฌธ์ž ๋ฐฐ์—ด ํ˜•ํƒœ์˜ ๋ฒ„ํผ(buffer)๋ผ๋Š” ์ž„์‹œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  • ๋ฒ„ํผ๋ฅผ ์ด์šฉํ•˜๋ฉด ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ์ข€ ๋” ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.


fflush() ํ•จ์ˆ˜

  • ๊ฐ€๋” ์ถœ๋ ฅ๋ฒ„ํผ๋ฅผ ๋น„์›Œ์•ผํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ๋ฒ„ํผ์— ์ฐŒ๊บผ๊ธฐ๋“ค์ด ๋‚จ์•„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ •์ƒ๋™์ž‘์„ ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • ๊ทธ๋•Œ ์“ฐ๋Š” ๊ฒŒ fflush() ํ•จ์ˆ˜์ด๋‹ค.
  • fflushํ•จ์ˆ˜๋Š” ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ์ŠคํŠธ๋ฆผ์— ์—ฐ๊ฒฐ๋œ ๋ฒ„ํผ๋ฅผ ๋น„์›Œ์ค€๋‹ค.
  • ์ถœ๋ ฅ๋ฒ„ํผ๋ฅผ ๋น„์šด๋‹ค๋Š” ๊ฒƒ์€ ์ถœ๋ ฅ๋ฒ„ํผ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์šฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ถœ๋ ฅ๋ฒ„ํผ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ์ข… ์ „์†กํ•จ์„ ๋œปํ•œ๋‹ค.
int fflush(FILE * stream);
โ–ถ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์„ฑ๊ณต ์‹œ 0, ์‹คํŒจ ์‹œ EOF ๋ฐ˜ํ™˜

โ˜… EOF๋Š” End Of File์˜ ๋œป์œผ๋กœ, ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ๋˜๋Š” ํŒŒ์ผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์ฝ์—ˆ๋Š”์ง€ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 

์‹ค์ œ๋กœ ์ด ๊ฐ’์€ -1์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.


์ž…๋ ฅ ๋ฒ„ํผ์˜ ๋™์ž‘

  • ์ž…๋ ฅ ๋ฒ„ํผ ๋ฌธ์ œ๋Š” ๋ฌธ์ž ํ˜•์‹์„ ๋ฐ›์„ ๋•Œ ์ผ์–ด๋‚œ๋‹ค. 
  • ์ž…๋ ฅ ๋ฒ„ํผ์— ๋‚จ์•„์žˆ๋Š” ๋ฌธ์ž ๋•Œ๋ฌธ์—, ์›ํ•˜๋Š” ๋™์ž‘์ด ์ผ์–ด๋‚˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š”๋ฐ ๋Œ€๊ฐœ ์—”ํ„ฐํ‚ค์˜ ์ž”์—ฌ๋ฌผ์ธ \n ๋•Œ๋ฌธ์ด๋‹ค.
  • scanf ํ•จ์ˆ˜์ฒ˜๋Ÿผ ํ˜•์‹์— ๋งž๊ฒŒ ์ž…๋ ฅ์„ ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ ๋‚ด์šฉ์ด ํ˜•์‹ ๋ฌธ์ž์—ด๋ณด๋‹ค ๋” ๋งŽ์€ ๋‚ด์šฉ์„ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉด ๋ฒ„ํผ์— ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚จ๊ฒŒ ๋œ๋‹ค.

โ–ถ  scanf ํ•จ์ˆ˜๋กœ๋Š” ํ•™๋ฒˆ์„ ์ž…๋ ฅ๋ฐ›๊ณ , fgets ํ•จ์ˆ˜๋กœ๋Š” ์ด๋ฆ„์„ ์ž…๋ ฅ๋ฐ›๋Š” ํ”„๋กœ๊ทธ๋žจ

#include <stdio.h>

int main(void)
{
	int num;
    char name[10];
    
    printf("ํ•™๋ฒˆ์„ ์ž…๋ ฅํ•˜์„ธ์š” : ");
    scanf("%d", &num);
    
    printf("์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š” : ");
    fgets(name, sizeif(name), stdin);
    
    printf("ํ•™๋ฒˆ : %d\n", num);
    ptintf("์ด๋ฆ„ : %s\n", name);
    
    return 0;
}
์‹คํ–‰๊ฒฐ๊ณผ
ํ•™๋ฒˆ์„ ์ž…๋ ฅํ•˜์„ธ์š” : 1234(์ž…๋ ฅ)
์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š” : ํ•™๋ฒˆ : 1234
์ด๋ฆ„ :

  • ํ•™๋ฒˆ์„ ์ž…๋ ฅํ•œ ๋’ค ์—”ํ„ฐ ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ด๋ฆ„ ์ž…๋ ฅ ๋ถ€๋ถ„์€ ๊ทธ๋Œ€๋กœ ๋„˜์–ด๊ฐ€๋ฒ„๋ฆฐ๋‹ค.
  • scanf ํ•จ์ˆ˜๋กœ ๊ฐ’์„ ์ž…๋ ฅํ•˜๊ณ  ์—”ํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ฒ„ํผ์— \n ๊ฐ’์ด ๋‚จ๊ฒŒ ๋˜๋Š”๋ฐ, ๋‚จ๊ฒจ์ง„ \n๋ฅผ ๋‹ค์Œ์— ํ˜ธ์ถœ๋˜๋Š” fgets ํ•จ์ˆ˜๊ฐ€ ๋ฐ์ดํ„ฐ๋กœ ๋ฐ›์•„๋“ค์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

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

โ–ถ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์ž…๋ ฅ ๋ฒ„ํผ๋ฅผ ๋น„์šฐ๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ค˜์•ผ ํ•œ๋‹ค.

์ž…๋ ฅ ๋ฒ„ํผ์—์„œ ๋ฌธ์ž๋ฅผ ๊ณ„์† ๊บผ๋‚ด๊ณ  \n๋ฅผ ๊บผ๋‚ด๋ฉด ๋ฐ˜๋ณต์„ ์ค‘๋‹จํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

while(getchar() != '\n');
#include <stdio.h>

void clearInputBuffer(void)
{
	while (getchar() != '\n');
}

int main(void)
{
	int num;
    char name[10];
    
    printf("ํ•™๋ฒˆ์„ ์ž…๋ ฅํ•˜์„ธ์š” : ");
    scanf("%d", &num);
    
    clearInputBuffer();
    
    printf("์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š” : ");
    scanf("%s", name);
    
    printf("ํ•™๋ฒˆ : %d\n", num);
    printf("์ด๋ฆ„ : %s\n", name);
    
    return 0;
}
์‹คํ–‰๊ฒฐ๊ณผ
ํ•™๋ฒˆ์„ ์ž…๋ ฅํ•˜์„ธ์š” : 1234(์ž…๋ ฅ)
์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š” : ๊น€์„ธ์ข…(์ž…๋ ฅ)
ํ•™๋ฒˆ : 1234
์ด๋ฆ„ : ๊น€์„ธ์ข…

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

  • ์ŠคํŠธ๋ฆผ์˜ ์ข…๋ฅ˜๋Š” ๋‹ค์–‘ํ•œ๋ฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ๊ธฐ์ค€์„ ํ†ตํ•ด์„œ ์ŠคํŠธ๋ฆผ์„ ๊ตฌ๋ถ„ํ•˜๊ฒŒ ๋œ๋‹ค.
  • ์ฝ๊ธฐ ์œ„ํ•œ ์ŠคํŠธ๋ฆผ? ์“ฐ๊ธฐ ์œ„ํ•œ ์ŠคํŠธ๋ฆผ?
    • ํŒŒ์ผ์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์ŠคํŠธ๋ฆผ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์ŠคํŠธ๋ฆผ์œผ๋กœ ๊ตฌ๋ถ„
  • ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•œ ์ŠคํŠธ๋ฆผ? ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•œ ์ŠคํŠธ๋ฆผ?
    • ์ถœ๋ ฅ์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ์„œ ํ…์ŠคํŠธ ๋ชจ๋“œ์™€ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ชจ๋“œ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค.

โ–ถ ์ŠคํŠธ๋ฆผ์€ ๋ฐ์ดํ„ฐ ์ด๋™๋ฐฉํ–ฅ์„ ๊ธฐ์ค€์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด 4๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ์ดํ„ฐ READ ์ŠคํŠธ๋ฆผ ๋ฐ์ดํ„ฐ WRITE ์ŠคํŠธ๋ฆผ ๋ฐ์ดํ„ฐ APPEND ์ŠคํŠธ๋ฆผ ๋ฐ์ดํ„ฐ READ/WRITE ์ŠคํŠธ๋ฆผ
์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅ ์“ฐ๊ธฐ๋งŒ ๊ฐ€๋Šฅ ๋ง๋ถ™์—ฌ ์“ฐ๊ธฐ๋งŒ ๊ฐ€๋Šฅ ์ฝ๊ธฐ, ์“ฐ๊ธฐ ๋ชจ๋‘ ๊ฐ€๋Šฅ

 

โ–ถ C์–ธ์–ด์—์„œ๋Š” ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ 6๊ฐ€์ง€๋กœ ์ŠคํŠธ๋ฆผ์„ ์„ธ๋ถ„ํ™”ํ•œ๋‹ค.

๋ชจ๋“œ ์ŠคํŠธ๋ฆผ์˜ ์„ฑ๊ฒฉ ํŒŒ์ผ์ด ์—†์œผ๋ฉด
r ์ฝ๊ธฐ ๊ฐ€๋Šฅ ์—๋Ÿฌ
w ์“ฐ๊ธฐ ๊ฐ€๋Šฅ ์ƒ์„ฑ
a ํŒŒ์ผ์— ๋์— ๋ง๋ถ™์—ฌ ์“ฐ๊ธฐ ๊ฐ€๋Šฅ ์ƒ์„ฑ
r+ ์ฝ๊ธฐ/์“ฐ๊ธฐ ๊ฐ€๋Šฅ ์—๋Ÿฌ
w+ ์ฝ๊ธฐ/์“ฐ๊ธฐ ๊ฐ€๋Šฅ ์ƒ์„ฑ
a+ ์ฝ๊ธฐ/๋ง๋ถ™์—ฌ ์“ฐ๊ธฐ ๊ฐ€๋Šฅ ์ƒ์„ฑ

โ˜… ์›ฌ๋งŒํ•˜๋ฉด r,w,a๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž…๋ ฅ์ŠคํŠธ๋ฆผ๊ณผ ์ถœ๋ ฅ์ŠคํŠธ๋ฆผ์„ ๋”ฐ๋กœ ์ƒ์„ฑํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

+๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ฐœ๋ฐฉ ๋ชจ๋“œ๋Š” ์ฝ๊ธฐ์—์„œ ์“ฐ๊ธฐ๋กœ, ์“ฐ๊ธฐ์—์„œ ์ฝ๊ธฐ๋กœ ์ž‘์—…์„ ๋ณ€๊ฒฝํ•  ๋•Œ๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ๋ฅผ ๋น„์›Œ์ค˜์•ผ ํ•˜๋Š” ๋“ฑ์˜ ๋ถˆํŽธํ•จ๊ณผ ๋”๋ถˆ์–ด ์ž˜๋ชป๋œ ์‚ฌ์šฉ์˜ ์œ„ํ—˜์„ฑ๋„ ๋’ค๋”ฐ๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.


โ–ถ ์ŠคํŠธ๋ฆผ์˜ ์„ฑ๊ฒฉ์€ ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค.

ํ…์ŠคํŠธ ๋ชจ๋“œ ์ŠคํŠธ๋ฆผ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ชจ๋“œ ์ŠคํŠธ๋ฆผ
๋ฌธ์ž ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ŠคํŠธ๋ฆผ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ŠคํŠธ๋ฆผ
  • ํ…์ŠคํŠธ ํŒŒ์ผ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์•„์Šคํ‚ค์ฝ”๋“œ ๋˜๋Š” ์œ ๋‹ˆ์ฝ”๋“œ ๊ฐ’์— ๋”ฐ๋ผ ์ €์žฅํ•œ ๊ฒƒ์ด๋ฉฐ, ๊ทธ ์™ธ์˜ ๋ฐฉ์‹์œผ๋กœ ์ €์žฅ๋œ ํŒŒ์ผ์€ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์ด๋‹ค.
  • ํ…์ŠคํŠธ ํŒŒ์ผ์€ ๋ฉ”๋ชจ์žฅ๊ณผ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์€ ํ•ด๋‹น ๊ธฐ๋ก ๋ฐฉ์‹์„ ์ ์šฉํ•œ ๋ณ„๋„์˜ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
  • ์˜ˆ๋กœ, ํ…์ŠคํŠธ ํŒŒ์ผ์€ ๋ฉ”๋ชจ์žฅ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋‚˜ ๊ทธ๋ฆผ ํŒŒ์ผ์„ ๋ณด๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ทธ๋ฆผํŒ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
ํ…์ŠคํŠธ ํŒŒ์ผ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ




๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์„ ์ „์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์•„๋‹Œ ๋ฉ”๋ชจ์žฅ์—์„œ ์‚ฌ์šฉํ•˜๋ฉด
์œ„์™€ ๊ฐ™์ด ์•Œ ์ˆ˜ ์—†๋Š” ๋ฌธ์ž๋กœ ํ‘œ์‹œ๋œ๋‹ค.
.txt .jpg, .png, .mp3, .exe ๋“ฑ

 

  • r, w, a, r+, w+, a+ ์˜ต์…˜ ์ด์™ธ์—๋„ ๊ฐœ๋ฐฉ ๋ชจ๋“œ๋ฅผ ์กฐํ•ฉํ•ด ํ…์ŠคํŠธ ๋ชจ๋“œ(rt, wt, at)๋กœ ์—ด์ง€, ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ชจ๋“œ(rb, wb, ab)๋กœ ์—ด์ง€ ์ด๋ ‡๊ฒŒ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์•„๋ฌด๊ฒƒ๋„ ์ž…๋ ฅํ•˜์ง€ ์•Š์œผ๋ฉด ํ…์ŠคํŠธ ๋ชจ๋“œ๋กœ ํŒŒ์ผ์— ์ ‘๊ทผํ•œ๋‹ค.

ํŒŒ์ผ ๊ฐœ๋ฐฉ ํ•จ์ˆ˜

ํŒŒ์ผ ์—ด๊ธฐ (fopen)

  • fopen ํ•จ์ˆ˜๋Š” ์ŠคํŠธ๋ฆผ์„ ํ˜•์„ฑํ•  ๋•Œ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.
  • ์ŠคํŠธ๋ฆผ ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ํŒŒ์ผ ๊ฐœ๋ฐฉ์ด๋ผ๊ณ  ํ•˜๋ฉฐ f๋Š” file์„ ๋งํ•œ๋‹ค. ์ฆ‰ file open์ด๋ผ๋Š” ํ•จ์ˆ˜์ด๋‹ค.
FILE * fopen(const char * filename, const char * mode);
โ–ถ ๊ฐœ๋ฐฉ์— ์„ฑ๊ณตํ•˜๋ฉด FILE ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๊ฐ’(ํฌ์ธํ„ฐ), ์‹คํŒจํ•˜๋ฉด ๋„(NULL) ํฌ์ธํ„ฐ ๋ฐ˜ํ™˜
๊ฐœ๋ฐฉํ•  ํŒŒ์ผ์€ ํ˜„์žฌ์˜ ์ž‘์—… ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ƒ์„ฑ๋œ๋‹ค.
FILE * fp = fopen("sejong.txt", "w");

๊ฒฝ๋กœ๋ฅผ ํฌํ•จํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•ด๋„ ๋œ๋‹ค.
FILE * fp = fopen("C:\\project\\sejong.txt","w");

๋ฌธ์ž์—ด ์•ˆ์˜ ๋ฐฑ์Šฌ๋ž˜์‹œ๋Š” ์ œ์–ด ๋ฌธ์ž์˜ ์‹œ์ž‘์„ ๋œปํ•œ๋‹ค. 
๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฐฑ์Šฌ๋ž˜์‹œ๋Š” ๋ฌธ์ž์—ด ์•ˆ์— ์žˆ์œผ๋ฏ€๋กœ ๋‘ ๋ฒˆ ์‚ฌ์šฉํ•œ๋‹ค.

 

  • fopen ํ•จ์ˆ˜๊ฐ€ ๊ฐœ๋ฐฉ์— ์„ฑ๊ณตํ•˜๋ฉด ์ŠคํŠธ๋ฆผํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ํŒŒ์ผํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ์ŠคํŠธ๋ฆผํŒŒ์ผ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฒ„ํผ์™€ ๋ฒ„ํผ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์—ฌ๋Ÿฌ ์ •๋ณด๋ฅผ ํŒŒ์ผ ๊ตฌ์กฐ์ฒด๋ณ€์ˆ˜์— ์ €์žฅํ•˜๊ณ  ์žˆ๋‹ค.
  • ์ด ๊ตฌ์กฐ์ฒด๋ณ€์ˆ˜์˜ ํฌ์ธํ„ฐ๋ฅผ ํŒŒ์ผํฌ์ธํ„ฐ๋ผ๊ณ  ํ•œ๋‹ค.
  • ํŒŒ์ผํฌ์ธํ„ฐ๋ฅผ ํฌ์ธํ„ฐ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๋ฉด ์ž…์ถœ๋ ฅ ์ค€๋น„์ž‘์—…์ด ๋๋‚œ ๊ฒƒ์ด๋‹ค.
FILE * fp;
fp = fopen("sejong.txt" , "w");
ํŒŒ์ผํฌ์ธํ„ฐ๋ฅผ fp๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ ,ํŒŒ์ผ์„ ์—ด์–ด์„œ fp๊ฐ€ ๊ทธ ์œ„์น˜๋ฅผ ๊ธฐ์–ตํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

if(fp == NULL)
{
    printf("ํŒŒ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค.");
    return 1;
}
ํŒŒ์ผ ๊ฐœ๋ฐฉ์— ์‹คํŒจํ•˜๋ฉด fopenํ•จ์ˆ˜๋Š” ๋„ ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
๋„ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹คํ–‰ํ•  ๋•Œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ๋ฐ˜๋“œ์‹œ ๊ฐœ๋ฐฉ์— ์„ฑ๊ณต ํ–ˆ๋Š”์ง€๋ฅผ ๊ฒ€์‚ฌํ•ด์•ผ ํ•œ๋‹ค.

ํŒŒ์ผ ๋‹ซ๊ธฐ(fclose)

int fclose(FILE *);
โ–ถ ์„ฑ๊ณตํ•˜๋ฉด 0, ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ EOF
  • ์‚ฌ์šฉ์ด ๋๋‚œ ํŒŒ์ผ์€ ๋‹ซ์•„์„œ ์ŠคํŠธ๋ฆผํŒŒ์ผ์„ ์ œ๊ฑฐํ•ด ์ค€๋‹ค.
  • ํŒŒ์ผ ์—ด๊ธฐ๋ฅผ ํ†ตํ•ด ๋งŒ๋“ค์–ด์ง„ ์ŠคํŠธ๋ฆผํŒŒ์ผ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ํŒŒ์ผ์„ ๋‹ซ์•„์ฃผ์ง€ ์•Š์œผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋‚จ์•„์žˆ๊ฒŒ ๋˜์–ด, ๊ทธ๋งŒํผ์˜ ์ž์›์†์‹ค์„ ์ดˆ๋ž˜ํ•œ๋‹ค.
  • ๋˜ํ•œ ์ŠคํŠธ๋ฆผํŒŒ์ผ์— ๋‚จ์•„์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žฅ์น˜์— ๊ธฐ๋ก๋˜๊ธฐ ์ „์— ์ง€์›Œ์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์ด ๋๋‚œ ํŒŒ์ผ์€ ๋‹ซ์•„์„œ ์ŠคํŠธ๋ฆผํŒŒ์ผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์žฅ์น˜์— ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  • โ˜… ๊ฐœ๋ฐฉ๋œ ํŒŒ์ผ์€ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๋ฉด ์ž๋™์œผ๋กœ ๋‹ซํžˆ๋ฉด์„œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐ๋˜์ง€๋งŒ ์•ˆ์ •์„ฑ์„ ์œ„ํ•ด ๋ช…์‹œ์ ์œผ๋กœ ๋‹ซ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

ํŒŒ์ผ์„ ์—ด๊ณ  ๋‹ซ๋Š” ํ”„๋กœ๊ทธ๋žจ

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ž…์ถœ๋ ฅํ•˜๊ธฐ ์ „์—๋Š” ํŒŒ์ผ์„ ์—ฌ๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๊ณ  ์‚ฌ์šฉ์ด ๋๋‚˜๋ฉด ํŒŒ์ผ์„ ๋‹ซ๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.
  • fopen ํ•จ์ˆ˜๋Š” ํŒŒ์ผ์„ ์—ด๊ณ , fclose ํ•จ์ˆ˜๋Š” ํŒŒ์ผ์„ ๋‹ซ์Šต๋‹ˆ๋‹ค.
// ์‹ค์ œ๋กœ ํŒŒ์ผ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š”์ง€ ํ™•์ธํ•ด๋ณด๋Š” ์˜ˆ์ œ
#include <stdio.h>

int main(void)
{
	FILE * fp = fopen("sejong.txt", "w");	// ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ ํ˜•์„ฑ
    
    if (fp == NULL)	// fp๊ฐ€ ๋„ ํฌ์ธํ„ฐ๋ฉด
    {
    	printf("ํŒŒ์ผ ์—ด๊ธฐ ์‹คํŒจ\n");
        return -1;	// ๋น„์ •์ƒ์  ์ข…๋ฃŒ๋ฅผ ์˜๋ฏธํ•˜๊ธฐ ์œ„ํ•ด -1 ๋ฐ˜ํ™˜
    }
    
    fputc('s', fp);	// fp๊ฐ€ ์ง€์นญํ•˜๋Š” ํŒŒ์ผ sejong.txt์— s ์ €์žฅ
    fputc('j', fp);	// fp๊ฐ€ ์ง€์นญํ•˜๋Š” ํŒŒ์ผ sejong.txt์— j ์ €์žฅ
    fputc('u', fp);	// fp๊ฐ€ ์ง€์นญํ•˜๋Š” ํŒŒ์ผ sejong.txt์— u ์ €์žฅ
    
    fclose(fp);
    
    return 0;
}

 

 

โ˜… ์ถœ๋ ฅ์ „์šฉ ๋ชจ๋“œ๋Š” ๊ฐ™์€ ์ด๋ฆ„์˜ ํŒŒ์ผ์ด ์žˆ์„ ๋•Œ ๊ทธ ๋‚ด์šฉ์„ ๋ชจ๋‘ ์‚ญ์ œํ•˜๊ณ  ๊ฐœ๋ฐฉํ•˜๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

์ผ๋‹จ ์ฝ๊ธฐ ์ „์šฉ ๋ชจ๋“œ๋กœ ๊ฐœ๋ฐฉํ•œ ํ›„์— ํŒŒ์ผ ์กด์žฌ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ณ  ๋‹ค์‹œ ์ถœ๋ ฅ์ „์šฉ์œผ๋กœ ๊ฐœ๋ฐฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ifp = fopen("sejong.txt", "r");
if (ifp == NULL)
{
	fp = fopen("sejong.txt", "w");
}

 

โ˜… Visual Studio 2013 ๋ฒ„์ „ ์ด์ƒ๋ถ€ํ„ฐ scanf() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚˜๋ฉด์„œ ์ปดํŒŒ์ผ์ด ์•ˆ๋ฉ๋‹ˆ๋‹ค.
์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ฉด C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation,
use _CRT_SECURE_NO_WARNINGS. ๋ผ๊ณ  ๋‚˜์˜ต๋‹ˆ๋‹ค.


๋ฌธ์ž ์ž…์ถœ๋ ฅ ํ•จ์ˆ˜

๋ฌธ์ž ์ถœ๋ ฅ(fputc)

  • fputc ํ•จ์ˆ˜๋Š” File Put Character๋ฅผ ์กฐํ•ฉํ•œ ๊ธ€์ž๋กœ, ํŒŒ์ผ์—์„œ๋ถ€ํ„ฐ ๊ธ€์ž๋ฅผ ํ•˜๋‚˜์”ฉ ์“ฐ๋Š” ํ•จ์ˆ˜์ด๋‹ค.
int fputc(int, FILE *)
โ–ถ ์ถœ๋ ฅํ•œ ๋ฌธ์ž, ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ๋Š” EOF
  • fputcํ•จ์ˆ˜๊ฐ€ ๋ฌธ์ž๋ฅผ ์ถœ๋ ฅํ•  ๋•Œ๋„ fgetcํ•จ์ˆ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐœ๋ฐฉ๋œ ์ŠคํŠธ๋ฆผ ํŒŒ์ผ์˜ ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ํ•œ ๋ฌธ์ž๋ฅผ ์ถœ๋ ฅํ•  ๋•Œ๋งˆ๋‹ค ์ผ๋ฐ˜ ๋ฒ„ํผ์— ์ถœ๋ ฅ์ด ๋œ ํ›„์— ๊ฐœํ–‰๋ฌธ์ž๊ฐ€ ์ถœ๋ ฅ๋˜๋ฉด ํ•˜๋“œ๋””์Šคํฌ์˜ ํŒŒ์ผ๋กœ ์ถœ๋ ฅ๋œ๋‹ค.

#include <stdio.h>

int main(void)
{
	FILE * fp = fopen("sejong.txt", "w");
    
    char ch;
    
    if (fp == NULL)
    {
    	printf("ํŒŒ์ผ ์—ด๊ธฐ ์‹คํŒจ\n");
        return 1;
    }
    
    printf("๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.\n");
    
    while(1)
    {
    	ch = getchar();		// ํ‚ค๋ณด๋“œ ์ž…๋ ฅ
        if (ch == EOF)
        	break;
        fputc(ch, fp);		// ํŒŒ์ผ ์ถœ๋ ฅ
    }
    
    fclose(fp);
    
    return 0;
}
์‹คํ–‰๊ฒฐ๊ณผ
๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.
sejong(์ž…๋ ฅ)
^Z(์ž…๋ ฅ์ข…๋ฃŒ)
  • ํ‚ค๋ณด๋“œ๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ๋กœ ์ถœ๋ ฅํ•˜๋Š” ์˜ˆ์ œ์ด๋‹ค.
  • EOF ๊ฐ’์€ ๋ณดํ†ต ํ…์ŠคํŠธํŒŒ์ผ์˜ ๋์—์„œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์ด์ง€๋งŒ ํ‚ค๋ณด๋“œ์˜ 'ctrl+z'๋ฅผ ๋ˆ„๋ฅด๊ณ  ์—”ํ„ฐํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด getchar ํ•จ์ˆ˜๊ฐ€ -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ถœ๋ ฅ๊ฒฐ๊ณผ๋Š” sejong.txt ํŒŒ์ผ์„ ๋ฉ”๋ชจ์žฅ์œผ๋กœ ์—ด์–ด ํ™•์ธํ•ด๋ณธ๋‹ค.


๋ฌธ์ž ์ž…๋ ฅ(fgetc)

  • fgetc ํ•จ์ˆ˜๋Š” File Get Character๋ฅผ ์กฐํ•ฉํ•œ ๊ธ€์ž๋กœ, ํŒŒ์ผ์—์„œ๋ถ€ํ„ฐ ๊ธ€์ž๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฝ๋Š”๋‹ค๋Š” ๋œป์˜ ํ•จ์ˆ˜์ด๋‹ค.
int fgetc(FILE *)
โ–ถ ์ž…๋ ฅํ•œ ๋ฌธ์ž, ์˜ค๋ฅ˜๋‚˜ ํŒŒ์ผ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๋•Œ EOF

 

  • fgetc ํ•จ์ˆ˜๋Š” ์ŠคํŠธ๋ฆผํŒŒ์ผ์˜ ๋ฒ„ํผ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
  • ์ฒ˜์Œ์—๋Š” ๋ฒ„ํผ๊ฐ€ ๋น„์–ด์žˆ์œผ๋ฏ€๋กœ ํŒŒ์ผ์—์„œ ๋ฒ„ํผ ํฌ๊ธฐ๋งŒํผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ํ•œ ๋ฒˆ์— ๋ฒ„ํผ๋กœ ์ฝ์–ด ๋“ค์ž…๋‹ˆ๋‹ค.
  • ํŒŒ์ผ์ด ํฌ๊ธฐ๊ฐ€ ๋ฒ„ํผ๋ณด๋‹ค ์ž‘์œผ๋ฉด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ํ•œ ๋ฒˆ์— ๋ฒ„ํผ์— ์ €์žฅ๋œ๋‹ค.

  • ๊ทธ ์ดํ›„์— ํ˜ธ์ถœ๋˜๋Š” ์ž…๋ ฅํ•จ์ˆ˜๋Š” ๋ฒ„ํผ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๋•Œ๊นŒ์ง€ ๋ฒ„ํผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

  • ๋ฒ„ํผ๋กœ๋ถ€ํ„ฐ์˜ ์ž…๋ ฅ ์œ„์น˜๋Š” ํŒŒ์ผ๊ตฌ์กฐ์ฒด์˜ ๋ฉค๋ฒ„์ธ ์œ„์น˜์ง€์‹œ์ž๋กœ ํ™•์ธํ•œ๋‹ค.
  • ์ŠคํŠธ๋ฆผํŒŒ์ผ์—๋Š” ๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•  ๋ฒ„ํผ์˜ ์œ„์น˜๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์ง€์‹œ์ž๊ฐ€ ์žˆ๋‹ค.
  • ์œ„์น˜์ง€์‹œ์ž๋Š” 0์œผ๋กœ ์‹œ์ž‘ํ•˜๋ฉฐ fgetc ํ•จ์ˆ˜๊ฐ€ ํ•œ ๋ฌธ์ž์”ฉ ์ฝ์„ ๋•Œ 1์”ฉ ์ฆ๊ฐ€ํ•œ๋‹ค.
  • ์œ„์น˜์ง€์‹œ์ž์˜ ๊ฐ’์ด ํŒŒ์ผ์˜ ํฌ๊ธฐ์™€ ๊ฐ™์•„์ง€๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์ฝ์€ ๊ฒƒ์ด ๋˜๋ฉฐ, ์ด๋•Œ ํ•จ์ˆ˜๋Š” EOF๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

#include <stdio.h>

int main(void)
{
	FILE * fp = fopen("sejong.txt", "r");
    
    char ch;
    
    if (fp == NULL)
    {
    	printf("ํŒŒ์ผ ์—ด๊ธฐ ์‹คํŒจ\n");
        return 1;
    }
    
    while (1)	// ๋ฌดํ•œ ๋ฐ˜๋ณต
    {
    	ch = fgetc(fp);		// ๊ฐœ๋ฐฉํ•œ ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ํ•œ ๋ฌธ์ž ์ž…๋ ฅ
        if ( ch == EOF)		// ๋ฐ˜ํ™˜๊ฐ’์ด EOF๋ฉด
        	break;			// ๋ฐ˜๋ณต ์ข…๋ฃŒ
        putchar(ch);		// ์ฝ์–ด๋“ค์ธ ๋ฌธ์ž๋ฅผ ํ™”๋ฉด์— ์ถœ๋ ฅ
    }
    
    fclose(fp);
    
    return 0;
}
์‹คํ–‰๊ฒฐ๊ณผ
sejong

โ–ถ ๊ฐœ๋ฐฉํ•œ ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ํ•œ ๋ฌธ์ž๋ฅผ ์ž…๋ ฅ, ์ฝ์–ด ๋“ค์ธ ๋ฌธ์ž๋ฅผ ํ™”๋ฉด์— ์ถœ๋ ฅ์„ ๋ฌดํ•œ ๋ฐ˜๋ณต.

์›๋ณธ ํŒŒ์ผ์˜ ๋๊นŒ์ง€ ๋„๋‹ฌํ•˜๊ฒŒ ๋˜๋ฉด ๋ฐ˜ํ™˜๊ฐ’์ด EOF๊ฐ€ ๋˜์–ด break๋ฅผ ์‚ฌ์šฉํ•ด while ๋ฌธ์„ ๋น ์ ธ๋‚˜๊ฐ„๋‹ค.


ํŒŒ์ผ ์ž…์ถœ๋ ฅ ํ•จ์ˆ˜

๋ฌธ์ž์—ด ์ถœ๋ ฅ (fputs)

  • fputs ํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด์„ ํ•œ ๋ฒˆ์— ์ถœ๋ ฅํ•  ๋•Œ ์‚ฌ์šฉ
  • ์ฒซ ๋ฒˆ์งธ ์ธ์ž์—๋Š” ์ถœ๋ ฅํ•  ๋ฌธ์ž์—ด์˜ ์ฃผ์†Œ๊ฐ’์„ ์ฃผ๊ณ  ๋‘ ๋ฒˆ์งธ ์ธ์ž๋ฅผ ํ†ตํ•ด์„œ๋Š” ํŒŒ์ผํฌ์ธํ„ฐ๋ฅผ ์ธ์ˆ˜๋กœ ์ค€๋‹ค.
int fputs(const char *, FILE *);
โ–ถ ์ถœ๋ ฅ์— ์„ฑ๊ณตํ•˜๋ฉด ์Œ์ˆ˜๊ฐ€ ์•„๋‹Œ ๊ฐ’, ์‹คํŒจํ•˜๋ฉด EOF
#include <stdio.h>

int main(void)
{
    char str[20] = "I have a dream.";
    FILE * fp = fopen("fputs_test.txt","w");
    fputs(str, fp);
    fclose(fp);
    return 0;
}

โ˜… fputs ๋Œ€์‹  puts ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, puts ํ•จ์ˆ˜๋Š” ํ•ญ์ƒ ์ค„์„ ๋ฐ”๊พธ๋ฏ€๋กœ ๋ฌธ์ž์—ด์„ ์ด์–ด์„œ ์ถœ๋ ฅํ•  ์ˆ˜ ์—†๋‹ค.

๋”ฐ๋ผ์„œ ๋ฌธ์ž์—ด์˜ ์ถœ๋ ฅ์€ ์•ˆ์ „ํ•˜๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ์ˆ˜ํ–‰๋˜๋Š” fputs ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.


๋ฌธ์ž์—ด ์ž…๋ ฅ (fgets)

  • fgets ํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด์„ ํ•œ๋ฒˆ์— ์ž…๋ ฅํ•  ๋•Œ ์‚ฌ์šฉ
char * fgets(char *, int, FILE *)
โ–ถ ์ž…๋ ฅํ•œ char ๋ฐฐ์—ด, ํŒŒ์ผ์˜ ๋์ด๋ฉด NULL

 

  • fgets ํ•จ์ˆ˜๋Š” ์ธ์ž๊ฐ€ 3๊ฐœ์ด๋‹ค.
  • ํŒŒ์ผํฌ์ธํ„ฐ์™€ ์—ฐ๊ฒฐ๋œ ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ๋‘ ๋ฒˆ์งธ ์ „๋‹ฌ์ธ์ž๋กœ ์ฃผ์–ด์ง„ ๋ฐ”์ดํŠธ ์ˆ˜์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์™€์„œ ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋กœ ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์— ์ €์žฅํ•œ๋‹ค.
fgets(str, sizeof(str), fp);

str(์ฒซ ๋ฒˆ์งธ ์ธ์ž): ํŒŒ์ผ์—์„œ ๊ฐ€์ง€๊ณ  ์˜จ ๋ฌธ์ž์—ด์„ ๋„ฃ๋Š” ๋ณ€์ˆ˜
, ์ฝ์–ด ๋“ค์ธ ๋ฌธ์ž์—ด์„ ์ €์žฅํ•  char ๋ฐฐ์—ด์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ
sizeof(str)(๋‘ ๋ฒˆ์งธ ์ธ์ž): ํ•œ ๋ฒˆ์— ๊ฐ€์ง€๊ณ  ์˜ฌ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด ์ •๋ณด ๋ณ€์ˆ˜, ์ผ๋ฐ˜์ ์œผ๋กœ str๋กœ ์ „๋‹ฌ๋œ ๋ฐฐ์—ด์˜ ๊ธธ์ด(๋งˆ์ง€๋ง‰ NULL ๋ฌธ์ž ํฌํ•จ)๊ฐ€ ์‚ฌ์šฉ
fp(์„ธ ๋ฒˆ์งธ ์ธ์ž): ๋ฌธ์ž๋ฅผ ์ฝ์„ ์ŠคํŠธ๋ฆผ์„ ์‹๋ณ„ํ•˜๋Š” ํŒŒ์ผํฌ์ธํ„ฐ

 

5๋ฐ”์ดํŠธ์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ–๋Š” ๋ฐฐ์—ด์— ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ ๋ฐ›๋Š” ๊ฒฝ์šฐ
#include <stdio.h>

int main(void)
{
	char str[5];	// ํŒŒ์ผ์„ ์ฝ์„ ๋•Œ ์‚ฌ์šฉํ•  ์ž„์‹œ ๊ณต๊ฐ„
    FILE * fp = fopen("fgets_test.txt", "r");
    fgets(str, sizeof(str), fp);
    printf("%s\n", str);
    fclose(fp);
    
    return 0;
}
์‹คํ–‰๊ฒฐ๊ณผ
Sejo

๋„๋ฌธ์ž๊ฐ€ ์ €์žฅ๋  ๊ณต๊ฐ„์„ ์ œ์™ธํ•˜๊ณ  4๋ฐ”์ดํŠธ๋งŒ ์ž…๋ ฅ๋œ๋‹ค.
20๋ฐ”์ดํŠธ์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ–๋Š” ๋ฐฐ์—ด์— ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ ๋ฐ›๋Š” ๊ฒฝ์šฐ
#include <stdio.h>

int main(void)
{
	char str[20];	// ํŒŒ์ผ์— ์ฝ์„ ๋•Œ ์‚ฌ์šฉํ•  ์ž„์‹œ ๊ณต๊ฐ„
    FILE * fp = fopen("fgets_test.txt","r");
    fgets(str, sizeof(str), fp);
    printf("%s\n", str);
    fclose(fp);
    
    return 0;
}
์‹คํ–‰๊ฒฐ๊ณผ
Sejong University

์ž…๋ ฅ ๋ฐ›์„ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๋ณด๋‹ค ํŒŒ์ผ์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์œผ๋ฉด ํŒŒ์ผ ๋๊นŒ์ง€ ์ฝ์–ด๋“ค์ธ๋‹ค.
(๋‹จ, ์ค‘๊ฐ„์— \n(๊ฐœํ–‰๋ฌธ์ž)๊ฐ€ ์—†์–ด์•ผ ํ•œ๋‹ค.)

โ˜… fgets ๋Œ€์‹  gets ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, gets ํ•จ์ˆ˜๋Š” ์ž…๋ ฅํ•  ์ €์žฅ ๊ณต๊ฐ„์˜ ํฌ๊ธฐ๋ฅผ ์ธ์ˆ˜๋กœ ์ค„ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅํ•  ๋•Œ ํ• ๋‹นํ•˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์นจ๋ฒ”ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ฌธ์ž์—ด์˜ ์ž…๋ ฅ์€ ์•ˆ์ „ํ•˜๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ์ˆ˜ํ–‰๋˜๋Š” fgets ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.


๋ณ€ํ™˜ ์ถœ๋ ฅ (fprintf)

  • fprintf ํ•จ์ˆ˜๋Š” printf ํ•จ์ˆ˜์™€ ์‚ฌ์šฉ๋ฒ•์ด ๊ฐ™๋‹ค. 
  • ๋‹จ, ์ถœ๋ ฅ ๋Œ€์ƒ์„ ํŒŒ์ผํฌ์ธํ„ฐ๋กœ ์ง€์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค.
  • ์ฒซ ๋ฒˆ์งธ ์ „๋‹ฌ์ธ์ž๊ฐ€ ํŒŒ์ผ๊ตฌ์กฐ์ฒด์˜ ํฌ์ธํ„ฐ์ด๋‹ค.
  • ๊ทธ๋ž˜์„œ printf์™€ ๋‹ฌ๋ฆฌ fprintf๋Š” ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋กœ ์ „๋‹ฌ๋œ ํŒŒ์ผ๊ตฌ์กฐ์ฒด์˜ ํฌ์ธํ„ฐ๊ฐ€ ์ง€์นญํ•˜๋Š” ํŒŒ์ผ๋กœ ์ถœ๋ ฅ์ด ์ด๋ฃจ์–ด์ง„๋‹ค.
 int fprintf(FILE *, const char *, ...);
โ–ถ ์ถœ๋ ฅํ•œ ๋ฌธ์ž์˜ ๋ฐ”์ดํŠธ ์ˆ˜, ์‹คํŒจํ•˜๋ฉด ์Œ์ˆ˜
#include <stdio.h>

int main(void)
{
	int number = 21012345;
    char name[10] = "๊น€์„ธ์ข…";
    
    FILE * fp = fopen("student.txt", "w");
    
    if (fp == NULL)
    	printf("ํŒŒ์ผ ์—ด๊ธฐ ์‹คํŒจ\n");
       
    else
    {
    	fprintf(fp, "%d %s", number, name);
        fclose(fp);
    }
    
    return 0;
}


๋ณ€ํ™˜ ์ž…๋ ฅ (fscanf)

  • fscanf ํ•จ์ˆ˜๋Š” scanf ํ•จ์ˆ˜์™€ ์‚ฌ์šฉ๋ฒ•์ด ๊ฐ™๋‹ค.
  • ๋‹จ, ์ž…๋ ฅ ๋Œ€์ƒ์„ ํŒŒ์ผํฌ์ธํ„ฐ๋กœ ์ง€์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค.
  • ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋กœ ํŒŒ์ผ๊ตฌ์กฐ์ฒด์˜ ํฌ์ธํ„ฐ๊ฐ€ ์ „๋‹ฌ๋œ๋‹ค.
  • ๋”ฐ๋ผ์„œ fscanf๋Š” ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋กœ ์ „๋‹ฌ๋œ ํฌ์ธํ„ฐ๊ฐ€ ์ง€์นญํ•˜๋Š” ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด ๋“ค์ธ๋‹ค.
int fscanf(FILE *, const char *, ...);
โ–ถ ์ž…๋ ฅ์— ์„ฑ๊ณตํ•œ ๋ฐ์ดํ„ฐ ์ˆ˜, ํŒŒ์ผ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๋•Œ EOF
#include <stdio.h>

int main(void)
{
	int number;
    char name[10];
    
    FILE * fp = fopen("student.txt", "r");
    
    if (fp == NULL)
    	printf("ํŒŒ์ผ ์—ด๊ธฐ ์‹คํŒจ");
        
    else
    {
    	fscanf(fp, "%d %d", &number, name);
        printf("%d %s\n", number, name);
        fclose(fp);
    }
    
    return 0;
}
์‹คํ–‰ ์‹œ, student.txt์— ์ €์žฅ๋๋˜ "21012345 ๊น€์„ธ์ข…"์ด ๋ณ€์ˆ˜ number, name์— ์ž…๋ ฅ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
์‹คํ–‰๊ฒฐ๊ณผ
21012345 ๊น€์„ธ์ข…

'ํ”„๋กœ๊ทธ๋ž˜๋ฐ > C์–ธ์–ด' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๊ตฌ์กฐ์ฒด  (0) 2024.08.21
ํฌ์ธํ„ฐ & ํ•จ์ˆ˜  (0) 2024.08.16
ํฌ์ธํ„ฐ & ๋ฐฐ์—ด  (0) 2024.08.16
ํฌ์ธํ„ฐ  (0) 2024.08.15
๋ฐฐ์—ด  (0) 2024.08.14

+ Recent posts