๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Programming/C language

15 File input & output

by Dowon Kang 2024. 1. 25.

ํŒŒ์ผ ์ž…์ถœ๋ ฅ์€ ํ”„๋กœ๊ทธ๋žจ์ด ํŒŒ์ผ์„ ์ฝ์–ด๋“ค์ด๊ฑฐ๋‚˜ ํŒŒ์ผ์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๋Š” ์ž‘์—…์„ ๋งํ•ฉ๋‹ˆ๋‹ค. C ์–ธ์–ด์—์„œ ํŒŒ์ผ ์ž…์ถœ๋ ฅ์€ stdio.h ํ—ค๋” ํŒŒ์ผ์— ์ •์˜๋œ ํ•จ์ˆ˜๋“ค์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

 

Linux base 

"r": ์ฝ๊ธฐ ๋ชจ๋“œ (ํŒŒ์ผ์ด ์กด์žฌํ•ด์•ผ ํ•จ)
"w": ์“ฐ๊ธฐ ๋ชจ๋“œ (ํŒŒ์ผ์ด ์—†์œผ๋ฉด ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๋ฉฐ, ํŒŒ์ผ์ด ์ด๋ฏธ ์žˆ์œผ๋ฉด ๊ธฐ์กด ๋‚ด์šฉ์„ ์ง€์›€)
"a": ์ถ”๊ฐ€ ๋ชจ๋“œ (ํŒŒ์ผ์ด ์—†์œผ๋ฉด ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๋ฉฐ, ํŒŒ์ผ์ด ์ด๋ฏธ ์žˆ์œผ๋ฉด ๊ธฐ์กด ๋‚ด์šฉ ๋์— ์ถ”๊ฐ€)
"rb", "wb", "ab": ์ด์ง„ ํŒŒ์ผ์„ ์ฝ๊ธฐ/์“ฐ๊ธฐ/์ถ”๊ฐ€ ๋ชจ๋“œ๋กœ ์—ด๊ธฐ

 

1) ํŒŒ์ผ ์“ฐ๊ธฐ(File Wirte): fopen ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ์—ด ๊ณ , ์ƒˆ๋กœ์šด ํŒŒ์ผ์„ ์“ธ ์ˆ˜(์ƒ์„ฑ) ์žˆ์Šต๋‹ˆ๋‹ค.

๋”๋ณด๊ธฐ

#include <stdio.h>

 int main() {

         FILE * file = fopen("/mnt/c/Users/oneko/Desktop/Clang/test1.txt", "w");
         if (file == NULL) { // ํ•ญ์ƒ ์—๋Ÿฌ ํ™•์ธ์„ ํ•ด๋‘๋Š”๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค
                 printf("ํŒŒ์ผ ์ฝ๊ธฐ ์‹คํŒจ\n");
                 return 1;
         }

         fputs("fputs์„ ์ด์šฉํ•˜์—ฌ ๊ธ€์„ ์ ์–ด๋ณผ๊ฒŒ์š”\n", file);
         fputs("์ž˜ ์ ํžˆ๋Š”์ง€ ํ™•์ธ ๋ถ€ํƒ์—ฌ\n", file);
         
         fprintf(file, "%s\n", "์‹œ๊ฐ„์˜ ์†Œ์ค‘ํ•จ??");
         fprintf(file, "%s\n", "ํ•œ ์ˆœ๊ฐ„๋„ ๋†“์น  ์ˆ˜ ์—†์ง€");

         fclose(file); // ํŒŒ์ผ ๋‹ซ๊ธฐ๋Š” ํ•„์ˆ˜ 
         return 0;
}

 

  • fputs: ์ฃผ๋กœ ๋ฌธ์ž์—ด์„ ํŒŒ์ผ์— ์ง์ ‘ ์“ธ ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐœํ–‰ ๋ฌธ์ž(\n)๊ฐ€ ํฌํ•จ๋œ ๋ฌธ์ž์—ด์„ ์ „์ฒด๋กœ ํŒŒ์ผ์— ์“ฐ๊ธฐ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • fprintf: ํ˜•์‹ ์ง€์ •์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ํŒŒ์ผ์— ์“ธ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๋‚˜ ํŠน์ • ํ˜•์‹์˜ ๋ฌธ์ž์—ด์„ ํŒŒ์ผ์— ์“ธ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

 

2) ํŒŒ์ผ ์ฝ๊ธฐ(FIle Read): fopen ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด์— ์กด์žฌํ•˜๋Š” ํŒŒ์ผ์˜ ๋‚ด๋ถ€๋ฅผ ์ฝ์–ด์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”๋ณด๊ธฐ

#include <stdio.h>

 int main() {

    FILE* file = fopen("/mnt/c/Users/oneko/Desktop/Clang/test1.txt", "r");

    if (file != NULL) {
    char value[100];
    char value2[100];

    fscanf(file, "%[^\n]", value);
    fscanf(file, " ");
    fscanf(file, "%[^\n]", value2);

    printf("์ฝ์€ ๊ฐ’: %s\n", value);
    printf("์ฝ์€ ๊ฐ’2: %s\n", value2);

fgets(value, sizeof(value), file);
    fgets(value2, sizeof(value2), file);

    printf("์ฝ์€ ๊ฐ’ 1: %s", value);
    printf("์ฝ์€ ๊ฐ’ 2: %s", value2);

    fclose(file);
    } else {
      printf("ํŒŒ์ผ ์—ด๊ธฐ ์‹คํŒจ\n");
    }
}

 

  • ํŒŒ์ผ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ธฐ ์œ„ํ•ด์„œ๋Š” fscanf ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋˜๋Š” fgets ํ•จ์ˆ˜๋„ ํŒŒ์ผ์—์„œ ํ•œ ์ค„์”ฉ ๋ฌธ์ž์—ด์„ ์ฝ์–ด์˜ค๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ง€์ •๋œ ๊ธธ์ด(num)๊นŒ์ง€์˜ ๋ฌธ์ž์—ด์„ ์ฝ์–ด์˜ค๊ณ , ํŒŒ์ผ์˜ ๋์— ๋„๋‹ฌํ•˜๊ฑฐ๋‚˜ ๊ฐœํ–‰ ๋ฌธ์ž('\n')๋ฅผ ๋งŒ๋‚˜๋ฉด ์ฝ๊ธฐ๋ฅผ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.

 

 

3) ํŒŒ์ผ ์ˆ˜์ •(File Update)

๋”๋ณด๊ธฐ

#include <stdio.h>

int main() {
    FILE* file = fopen("/mnt/c/users/oneko/desktop/clang/test1.txt", "a");

    if (file != NULL) {
        fputs("Hello Worlddd!\n", file);
        fputs("๊ธ€์ด ์ถ”๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ์•„์•„์•„?\n", file);
        
        fprintf(file, "Hello Worlddd!\n");
        fprintf(file, "๊ธ€์ด ์ถ”๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ์•„์•„์•„?\n");
        
        fclose(file);
    } else {
        printf("ํŒŒ์ผ ์—ด๊ธฐ ์‹คํŒจ\n");
    }

    return 0;
}

 

๋‘˜ ๋‹ค ํŒŒ์ผ์— ๋ฌธ์ž์—ด์„ ์“ธ ์ˆ˜ ์žˆ์ง€๋งŒ, ์‚ฌ์šฉ ๋ชฉ์ ์— ๋”ฐ๋ผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. fputs๋Š” ๋‹จ์ˆœํ•œ ๋ฌธ์ž์—ด ์“ฐ๊ธฐ์— ์œ ์šฉํ•˜๊ณ , fprintf๋Š” ํ˜•์‹ํ™”๋œ ์ถœ๋ ฅ์„ ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

 

[์˜ค๋ฅ˜ ํ•ด๊ฒฐ]
fscanf ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉ๋œ ํ˜•์‹ ์ง€์ •์ž์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. %s ํ˜•์‹ ์ง€์ •์ž๋Š” ๊ณต๋ฐฑ ๋ฌธ์ž(์ŠคํŽ˜์ด์Šค, ํƒญ, ๊ฐœํ–‰ ๋“ฑ)์„ ์ œ์™ธํ•œ ๋ฌธ์ž๋“ค์„ ์ฝ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ "fputs์„" ๋‹ค์Œ์˜ ๊ณต๋ฐฑ์ด๋‚˜ ๊ฐœํ–‰ ๋ฌธ์ž๊ฐ€ ๋‚˜์˜ค๋ฉด ์ฝ๊ธฐ๊ฐ€ ๋ฉˆ์ถ”๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
๋งŒ์•ฝ ํŒŒ์ผ์— ์—ฌ๋Ÿฌ ์ค„์ด ์žˆ๊ณ , ๊ฐ ์ค„์„ ํ†ต์งธ๋กœ ์ฝ๊ณ  ์‹ถ๋‹ค๋ฉด %s ๋Œ€์‹  %[^\n]์„ ์‚ฌ์šฉ

 

 

'Programming > C language' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

14 Structure (๊ตฌ์กฐ์ฒด)  (0) 2024.01.25
13 Array  (0) 2024.01.24
12 Pointer  (1) 2024.01.24
11 function (ํ•จ์ˆ˜)  (0) 2024.01.23
10 string (feat. random ํ•จ์ˆ˜)  (0) 2024.01.23

๋Œ“๊ธ€