C Programming Language/C

C์–ธ์–ด์˜ ์ž…์ถœ๋ ฅ๊ณผ ํŒŒ์ผ ์ŠคํŠธ๋ฆผ(stream)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ (2)

567Rabbit 2024. 8. 12. 20:56

C์–ธ์–ด์˜ ์ž…์ถœ๋ ฅ๊ณผ ํŒŒ์ผ ์ŠคํŠธ๋ฆผ(stream)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ (1) (tistory.com)

 

C์–ธ์–ด์˜ ์ž…์ถœ๋ ฅ๊ณผ ํŒŒ์ผ ์ŠคํŠธ๋ฆผ(stream)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ (1)

์ŠคํŠธ๋ฆผ(stream) ์ด๋ž€?์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ๋ฐ”์ดํŠธ(byte)๋“ค์˜ ํ๋ฆ„์œผ๋กœ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŒŒ์ผ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜, ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ, ์ŠคํŠธ๋ฆผ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.์Šค

codebunny99.tistory.com

 

 

 

ํŒŒ์ผ ์ž…์ถœ๋ ฅ

 

fopen: ํŒŒ์ผ ์—ด๊ธฐ

fscanf / fgets : ํŒŒ์ผ์ฝ๊ธฐ (ํ•œ ๋‹จ์–ด์”ฉ ์ฝ์„ ๋•Œ / ํ•œ ์ค„์”ฉ ์ฝ์„ ๋•Œ)

fprintf : ํŒŒ์ผ ์“ฐ๊ธฐ

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

 

 

 

1. ํŒŒ์ผ์— ๋ฐ์ดํ„ฐ ์“ฐ๊ธฐ

 

#include <stdio.h>

int main()
{
    FILE *fp = NULL;
    fp = fopen("data.txt", "w");
    
    if(fp == NULL){
    	printf("Failed to open file %s\n", "data.txt");
        return -1;
    }
    
    // file write
    fprintf(fp, "My first data file\n");
    fclose(fp);
    return 0;
}

 

- "data.txt"๋ผ๋Š” ์ด๋ฆ„์˜ ํŒŒ์ผ์„ ์“ฐ๊ธฐ ๋ชจ๋“œ๋กœ ์—ฐ๋‹ค.

- "data.txt"  ํŒŒ์ผ์— "My first data file"์ด๋ผ๋Š” ๋ฌธ์ž์—ด์„ ์ž‘์„ฑํ•œ๋‹ค

- ํŒŒ์ผ์„ ๋‹ซ๋Š”๋‹ค.

- ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•œ๋‹ค.

 

 

 

 

2. ํŒŒ์ผ์—์„œ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ - ํ•œ ๋‹จ์–ด์”ฉ

 

#include <stdio.h>

int main()
{
    FILE *fp = NULL;
    char buff[100];
    fp = fopen("data.txt", "r");
    
    if(fp == NULL){
    	printf("Failed to open file %s\n", "data.txt");
        return -1;
    }
    
    // file read
    while(fscanf(fp, "%s", buff) != EOF){
    	printf("%s\n", buff);
    }
    fclose(fp);
    return 0;
}

 

- fopen ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ "data.txt"๋ผ๋Š” ์ด๋ฆ„์˜ ํŒŒ์ผ์„ ์ฝ๊ธฐ ๋ชจ๋“œ("r")๋กœ ์—ฐ๋‹ค

- fscanf ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์—์„œ ๋ฌธ์ž์—ด์„ ์ฝ์–ด์˜จ๋‹ค. %s ํฌ๋งท ์ง€์ •์ž๋Š” ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ž์—ด์„ ์ฝ์–ด์˜ด

- fscanf๊ฐ€ ํŒŒ์ผ์—์„œ ๋ฌธ์ž์—ด์„ ์ฝ์–ด์˜ค๋ฉด buff ๋ฐฐ์—ด์— ์ €์žฅ๋˜๊ณ , EOF(End Of File ํŒŒ์ผ์˜ ๋)๊นŒ์ง€ ๋ฐ˜๋ณต

- ๊ฐ ์ฝ์–ด์˜จ ๋ฌธ์ž์—ด์„ printf๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถœ๋ ฅ

- ํŒŒ์ผ์„ ๋‹ซ๋Š”๋‹ค.

- ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•œ๋‹ค.

 

 

๊ฒฐ๊ณผ : data.txt์— ์ ์–ด๋†จ๋˜ "My first data file" ์ด

My

first

data

file

๋กœ ์ถœ๋ ฅ๋œ๋‹ค.

 

 

 

<fscanf ํ•จ์ˆ˜์˜ ๋™์ž‘>

 

์˜ˆ์‹œ

FILE *fp = fopen("data.txt", "r");
int a;
float b;
fscanf(fp, "%d %f", &a, &b);
fclose(fp);

 

 

scanf: ํ‘œ์ค€ ์ž…๋ ฅ์—์„œ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ. ํ‘œ์ค€ ์ž…๋ ฅ(ํ‚ค๋ณด๋“œ)์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š” ํ•จ์ˆ˜

fscanf: ํŒŒ์ผ ์ŠคํŠธ๋ฆผ์—์„œ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ. ์ง€์ •๋œ ํŒŒ์ผ ์ŠคํŠธ๋ฆผ์—์„œ format ๋ฌธ์ž์—ด์— ๋งž๋Š” ์ž…๋ ฅ์„ ์ฝ์–ด์™€ ๋ณ€์ˆ˜๋“ค์— ์ €์žฅํ•จ

sscanf: ๋ฌธ์ž์—ด์—์„œ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ. str์—์„œ format ๋ฌธ์ž์—ด์— ๋งž๋Š” ์ž…๋ ฅ์„ ์ฝ์–ด์™€์„œ ๋ณ€์ˆ˜๋“ค์— ์ €์žฅ

vscanf: ๊ฐ€๋ณ€ ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ‘œ์ค€ ์ž…๋ ฅ ์ฝ๊ธฐ. format ๋ฌธ์ž์—ด๊ณผ va_list ํƒ€์ž…์˜ ์ธ์ˆ˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌ

vsscanf: ๊ฐ€๋ณ€ ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ž์—ด ์ฝ๊ธฐ. sscanf์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์ธ์ˆ˜ ๋ชฉ๋ก์„ va_list ํƒ€์ž…์œผ๋กœ ๋ฐ›๋Š” ํ•จ์ˆ˜

vfscanf: ๊ฐ€๋ณ€ ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ์ผ ์ŠคํŠธ๋ฆผ ์ฝ๊ธฐ. fscanf์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์ธ์ˆ˜ ๋ชฉ๋ก์„ va_list ํƒ€์ž…์œผ๋กœ ๋ฐ›๋Š” ํ•จ์ˆ˜

 

 

 

 

 

3. ํŒŒ์ผ์—์„œ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ - ํ•œ์ค„

 

#include <stdio.h>
#define BUFF_SIZE 256

int main()
{
    FILE *fp = NULL;
    char buff[256];
    fp = fopen("data.txt", "r");
    
    if(fp == NULL){
    	printf("Failed to open file %s\n", "data.txt");
        return -1;
    }
    
    // file read lines
    while(fgets(buff, BUFF_SIZE, fp) != NULL){
    	printf("%s\n", buff);
    }
    fclose(fp);
    return 0;
}

 

๊ฒฐ๊ณผ : data.txt์— ์ ์–ด๋†จ๋˜ "My first data file" ์ด

My first data file

(ํ•œ์ค„)๋กœ ์ถœ๋ ฅ๋œ๋‹ค.

 

 

 

 

<fgets ํ•จ์ˆ˜์˜ ๋™์ž‘>

 

์˜ˆ์‹œ

FILE *fp = fopen("data.txt", "r");
char buffer[100];
while (fgets(buffer, sizeof(buffer), fp) != NULL) {
    printf("%s", buffer);
}
fclose(fp);

 

 

fgetc: ํŒŒ์ผ ์ŠคํŠธ๋ฆผ stream์—์„œ ํ•˜๋‚˜์˜ ๋ฌธ์ž๋ฅผ ์ฝ์–ด์˜ด. ์ฝ์–ด์˜จ ๋ฌธ์ž๋Š” int ํƒ€์ž…์œผ๋กœ ๋ฐ˜ํ™˜

fgets: ํŒŒ์ผ ์ŠคํŠธ๋ฆผ์—์„œ ๋ฌธ์ž์—ด ์ฝ๊ธฐ (ํ•œ ์ค„ ๋˜๋Š” ์ง€์ •๋œ ํฌ๊ธฐ๋งŒํผ). ์ž…๋ ฅ๋œ ๋ฌธ์ž์—ด์€ ์ค„๋ฐ”๊ฟˆ ๋ฌธ์ž๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ค„๋ฐ”๊ฟˆ ๋ฌธ์ž๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ ๋ฌธ์ž๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜

getc: ํŒŒ์ผ ์ŠคํŠธ๋ฆผ์—์„œ ๋‹จ์ผ ๋ฌธ์ž ์ฝ๊ธฐ (ํŒŒ์ผ ํฌ์ธํ„ฐ์™€ ๊ด€๋ จ๋œ ํ•จ์ˆ˜). fgetc์™€ ์œ ์‚ฌ

getchar: ํ‘œ์ค€ ์ž…๋ ฅ(ํ‚ค๋ณด๋“œ)์—์„œ ๋‹จ์ผ ๋ฌธ์ž๋ฅผ ์ฝ์–ด์˜ค๋Š” ํ•จ์ˆ˜. ํ‘œ์ค€ ์ž…๋ ฅ์—์„œ ํ•˜๋‚˜์˜ ๋ฌธ์ž๋ฅผ ์ฝ์–ด์˜จ๋‹ค. ๋ฐ˜ํ™˜๊ฐ’์€ int ํƒ€์ž…

ungetc: ๋งˆ์ง€๋ง‰์œผ๋กœ ์ฝ์€ ๋ฌธ์ž๋ฅผ ํŒŒ์ผ ์ŠคํŠธ๋ฆผ์— ๋˜๋Œ๋ ค ๋†“๋Š” ํ•จ์ˆ˜. char๋กœ ์ง€์ •๋œ ๋ฌธ์ž๋ฅผ ํŒŒ์ผ ์ŠคํŠธ๋ฆผ stream์— ๋‹ค์‹œ ๋„ฃ์–ด์ฃผ๋ฉฐ ์ด ๋ฌธ์ž๋Š” ๋‹ค์Œ ๋ฒˆ์— getc๋‚˜ fgetc๋กœ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค. ungetc๋Š” ํŒŒ์ผ ์ŠคํŠธ๋ฆผ์— ํ•œ ๋ฌธ์ž๋ฅผ ๋˜๋Œ๋ฆฌ๋ฉฐ, ์—ฐ์†ํ•ด์„œ ์—ฌ๋Ÿฌ ๋ฌธ์ž๋ฅผ ๋˜๋Œ๋ฆฌ๋Š” ๊ฒƒ์€ ๋ณด์žฅ๋˜์ง€ ์•Š์Œ

 

 

 

 

ํŒŒ์ผ ๋ชจ๋“œ

 

 

 

 

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

 

 

***** ์ด์ง„ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅํ•จ์ˆ˜๋Š” fwrite ์ด๋‹ค *****

***** ์ด์ง„ ๋ฐ์ดํ„ฐ ์ž…๋ ฅํ•จ์ˆ˜๋Š” fread ์ด๋‹ค *****

 

 

 

 

ํ…์ŠคํŠธ ํŒŒ์ผ๊ณผ ์ด์ง„ ํŒŒ์ผ์˜ ์ฐจ์ด์ 

 

 

ํ…์ŠคํŠธ ํŒŒ์ผ : ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์•„์Šคํ‚ค ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋˜์–ด์„œ ์ €์žฅ๋จ

 

  • ์ €์žฅ ๋ฐฉ์‹:
    • ๋ฌธ์ž ์ธ์ฝ”๋”ฉ: ํ…์ŠคํŠธ ํŒŒ์ผ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์œผ๋กœ ์ €์žฅ๋จ. ์ผ๋ฐ˜์ ์œผ๋กœ ASCII(๋ฏธ๊ตญ ํ‘œ์ค€ ์ฝ”๋“œ) ๋˜๋Š” UTF-8๊ณผ ๊ฐ™์€ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์ด ์‚ฌ์šฉ. ๋ฌธ์ž์™€ ๊ธฐํ˜ธ๋ฅผ ์ •์ˆ˜ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํŒŒ์ผ์— ์ €์žฅ
    • ์ค„ ๊ตฌ๋ถ„: ์ค„๋ฐ”๊ฟˆ์ด๋‚˜ ์บ๋ฆฌ์ง€ ๋ฆฌํ„ด๊ณผ ๊ฐ™์€ ํŠน์ˆ˜ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ค„์„ ๊ตฌ๋ถ„. ์˜ˆ๋ฅผ ๋“ค์–ด, UNIX ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์—์„œ๋Š” \n(Line Feed, LF)์„ ์‚ฌ์šฉ, Windows์—์„œ๋Š” \r\n(Carriage Return + Line Feed, CRLF)์„ ์‚ฌ์šฉ
  • ํŠน์ง•:
    • ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํ˜•์‹: ํ…์ŠคํŠธ ํŒŒ์ผ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ๋žŒ์ด ์ฝ๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•์‹
    • ๊ฐ€๋…์„ฑ: ํ…์ŠคํŠธ ํŒŒ์ผ์€ ์ผ๋ฐ˜ ํ…์ŠคํŠธ ์—๋””ํ„ฐ(์˜ˆ: Notepad, vim, emacs)๋กœ ์—ด์–ด ๋ณผ ์ˆ˜ ์žˆ์Œ.
    • ํŒŒ์ผ ํฌ๊ธฐ: ํ…์ŠคํŠธ ํŒŒ์ผ์€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ์˜ ์ด์ง„ ํŒŒ์ผ์— ๋น„ํ•ด ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ๋” ํด ์ˆ˜ ์žˆ๋‹ค. ์ด์œ ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌธ์ž๋กœ ํ‘œํ˜„๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€์ ์ธ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ํฌํ•จ๋˜๊ธฐ ๋•Œ๋ฌธ
  • ์˜ˆ์‹œ:
    • .txt, .csv, .html, .xml ๋“ฑ์˜ ํŒŒ์ผ ํ™•์žฅ์ž๋“ค์ด ์ผ๋ฐ˜์ ์œผ๋กœ ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ์ €์žฅ

 

 

 

์ด์ง„ ํŒŒ์ผ : ์ปดํ“จํ„ฐ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ์‹ ๊ทธ๋Œ€๋กœ ์ €์žฅ

 

  • ์ €์žฅ ๋ฐฉ์‹:
    • ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹: ์ด์ง„ ํŒŒ์ผ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ปดํ“จํ„ฐ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ˜•์‹ ๊ทธ๋Œ€๋กœ ์ €์žฅ. ์ฆ‰, ๋ฐ์ดํ„ฐ๊ฐ€ ๊ธฐ๊ณ„์–ด๋กœ ํ‘œํ˜„๋˜์–ด ํŒŒ์ผ์— ์ €์žฅ๋จ. ์ด์ง„ ํŒŒ์ผ์—๋Š” ๋ฌธ์ž ์ธ์ฝ”๋”ฉ, ์ค„ ๊ตฌ๋ถ„ ๋ฌธ์ž ๋“ฑ์ด ํ•„์š” ์—†์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ ์ •ํ™•ํžˆ ๋น„ํŠธ ๋‹จ์œ„๋กœ ์ €์žฅ
    • ํ˜•์‹: ์ด์ง„ ํŒŒ์ผ์€ ํŠน์ • ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ํŒŒ์ผ ํฌ๋งท์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐฐ์—ด, ๊ตฌ์กฐ์ฒด ๋“ฑ์œผ๋กœ ์ €์žฅ๋จ. ์ด๋Ÿฌํ•œ ํŒŒ์ผ ํฌ๋งท์€ ํŒŒ์ผ์„ ์ฝ๊ณ  ์“ธ ๋•Œ ํŠน์ • ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ํ•ด์„ํ•ด์•ผ ํ•œ๋‹ค.
  • ํŠน์ง•:
    • ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์—†๋Š” ํ˜•์‹: ์ด์ง„ ํŒŒ์ผ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์—†๋Š” ํ˜•์‹์œผ๋กœ ์ €์žฅ๋œ๋‹ค. ์ด์ง„ ๋ฐ์ดํ„ฐ๋Š” ํŠน์ • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ๋„๊ตฌ๊ฐ€ ์ด๋ฅผ ํ•ด์„ํ•  ์ˆ˜ ์žˆ์–ด์•ผ๋งŒ ์œ ์šฉํ•˜๋‹ค.
    • ๊ฐ€๋…์„ฑ: ์ด์ง„ ํŒŒ์ผ์€ ์ผ๋ฐ˜ ํ…์ŠคํŠธ ์—๋””ํ„ฐ๋กœ ์—ด์—ˆ์„ ๋•Œ ์•Œ์•„๋ณด๊ธฐ ์–ด๋ ค์šด ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. ์ „๋ฌธ์ ์ธ ์ด์ง„ ๋ทฐ์–ด(์˜ˆ: Hex Editor)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ํŒŒ์ผ ํฌ๊ธฐ: ์ด์ง„ ํŒŒ์ผ์€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ์˜ ํ…์ŠคํŠธ ํŒŒ์ผ๋ณด๋‹ค ๋” ์ž‘์„ ์ˆ˜ ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ์ฝ”๋”ฉ๊ณผ ๊ด€๋ จ๋œ ์ถ”๊ฐ€์ ์ธ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์—†๋‹ค.
  • ์˜ˆ์‹œ:
    • .exe(์‹คํ–‰ ํŒŒ์ผ), .jpg(์ด๋ฏธ์ง€ ํŒŒ์ผ), .mp4(๋น„๋””์˜ค ํŒŒ์ผ), .dat(๋ฐ์ดํ„ฐ ํŒŒ์ผ) ๋“ฑ

 

 

 

์˜ˆ์‹œ 

 

  1. ํ…์ŠคํŠธ ํŒŒ์ผ :
    • ํŒŒ์ผ ๋‚ด์šฉ: "Hello, world!"
    • ASCII ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์— ์ €์žฅ๋˜๋ฉฐ, ํ…์ŠคํŠธ ์—๋””ํ„ฐ์—์„œ ์ง์ ‘ ์—ด์–ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  2. ์ด์ง„ ํŒŒ์ผ :
    • ํŒŒ์ผ ๋‚ด์šฉ: JPEG ์ด๋ฏธ์ง€ ํŒŒ์ผ
    • ํŒŒ์ผ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” ์ด๋ฏธ์ง€์˜ ํ”ฝ์…€ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ ์ด์ง„ ํ˜•์‹์œผ๋กœ, ์ผ๋ฐ˜์ ์ธ ํ…์ŠคํŠธ ์—๋””ํ„ฐ๋กœ๋Š” ์˜๋ฏธ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

 

 

 

์ด์ง„ ํŒŒ์ผ ์“ฐ๊ธฐ

 

***** ์ด์ง„ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅํ•จ์ˆ˜๋Š” fwrite ์ด๋‹ค *****

#include <stdion.h>

#define SIZE 5
int main(void)
{
    int buffer[SIZE] = { 10, 20, 30, 40, 50 };
    FILE *fp = NULL;
    
    fp = fopen("binary.bin", "wb");
    if (fp == NULL)
    {
    	fprintf(stderr, "binary.bin ํŒŒ์ผ์„ ์—ด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.");
        return 1;
    }
    
    fwrite(buffer, sizeof(int), SIZE, fp);
    
    fclose(fp);
    return 0;
}

 

 

 

 

์ด์ง„ ํŒŒ์ผ ์ฝ๊ธฐ

 

***** ์ด์ง„ ๋ฐ์ดํ„ฐ ์ž…๋ ฅํ•จ์ˆ˜๋Š” fread ์ด๋‹ค *****

 

#include <stdion.h>
#define SIZE 5

int main(void)
{
    int i;
    int buffer[SIZE];
    FILE *fp = NULL;
    
    fp = fopen("binary.bin", "rb");
    if (fp == NULL)
    {
    	fprintf(stderr, "binary.bin ํŒŒ์ผ์„ ์—ด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.");
        return 1;
    }
    
    fread(buffer, sizeof(int), SIZE, fp);
    
    for(i = 0 ; i < SIZE ; i++)
    	printf("%d ", buffer[i]);
    
    fclose(fp);
    return 0;
}

 

- ์ด์ง„ ํŒŒ์ผ ์“ฐ๊ธฐ / ์ฝ๊ธฐ๊ฐ€ ์ž˜ ์ˆ˜ํ–‰๋˜์—ˆ๋‹ค๋ฉด, fwrite์—์„œ ์ ์—ˆ๋˜ ๋‚ด์šฉ( ex 10, 20, 30, 40, 50 )์ด ์ฝํ˜€์•ผ ํ•œ๋‹ค.

 

 

 

 

์ด์ง„ ํŒŒ์ผ ์ž…์ถœ๋ ฅ ์˜ˆ์ œ - ๊ตฌ์กฐ์ฒด

 

 

 

 

 

fseek() ํ•จ์ˆ˜

- C ์–ธ์–ด์—์„œ ํŒŒ์ผ์˜ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์œ„์น˜๋ฅผ ์กฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ํŒŒ์ผ ์ŠคํŠธ๋ฆผ์˜ ํ˜„์žฌ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ์›ํ•˜๋Š” ์œ„์น˜์—์„œ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ๋‚˜ ์“ฐ๊ธฐ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ํŒŒ์ผ์˜ ํŠน์ • ์œ„์น˜๋กœ ํฌ์ธํ„ฐ๋ฅผ ์ด๋™์‹œํ‚ฌ ๋•Œ ์œ ์šฉํ•˜๋‹ค.

 

ex)

int fseek(FILE *stream, long offset, int whence);

 

ex)

fseek(fp, 2, SEEK_SET) : ํŒŒ์ผ์—์„œ ์›ํ•˜๋Š” ์œ„์น˜์— ์ ‘๊ทผํ•˜๊ณ  ์‹ถ์œผ๋ฉด ํ•ด๋‹น ํฌ์ธํ„ฐ๋ฅผ ์˜ฎ๊ฒจ์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๊ฒƒ์„ fseekํ•จ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค. ์˜ค๋ฅธ์ชฝ์— ํ‘œ์‹œ๋œ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์–ผ๋งŒํผ ์›€์ง์ผ ๊ฒƒ์ธ์ง€ ์š”์ฒญ

 

 

< whence์˜ ๊ฐ’ >

 

SEEK_SET : ํŒŒ์ผ์˜ ์‹œ์ž‘์„ ๊ธฐ์ค€์œผ๋กœ ์ด๋™

SEEK_CUR : ํ˜„์žฌ ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ด๋™

SEEK_END : ํŒŒ์ผ์˜ ๋(EOF) ์„ ๊ธฐ์ค€์œผ๋กœ ์ด๋™

 

ex) ํŒŒ์ผ์˜ ์ฒ˜์Œ์œผ๋กœ ์ด๋™ : fseek (fp, 0, SEEK_SET)

ex) ํŒŒ์ผ์˜ ๋์—์„œ 10๋ฐ”์ดํŠธ ์•ž์ชฝ์œผ๋กœ ์ด๋™ : fseek(fp, -10, SEEK_END)