Nagie's DevStory

[C] 46. 파일 입출력 ( 3 ) 본문

Programming/C

[C] 46. 파일 입출력 ( 3 )

Nagie 2023. 10. 9. 01:02
728x90

앞서 파일 형식과는 무관하게 사용되는 함수들을 알아봤다.

이번엔 텍스트 파일 전용 함수들에 대해 알아볼 차례이며 텍스트 파일 전용 함수들은 아래와 같다.

 

//텍스트 파일 전용함수

int fgetc(FILE* stream);
int fputc(int c, FILE* stream);
char* fgets(char* string, int n, FILE* stream);
int fputs(const char* string,FILE* stream);

 

 

1. fgetc

 

fgetc는 파일에서 한 문자씩 읽어올 때 사용하는 함수다.

이 함수는 파일 포인터를 인자로 받아 해당 파일에서 한 문자씩 읽어온다.

다음은 fgetc의 사용 예시이다.

 

우선 sample.txt 파일에 다음과 같은 내용이 있다고 가정을 한다.

Hello, World!

 

#include <stdio.h>

int main() {
    FILE *filePointer;
    filePointer = fopen("sample.txt", "r");
    
    if (filePointer == NULL) {
        printf_s("파일 열기에 실패했습니다.");
        return 1;
    }

    int character;

    // 파일에서 문자 읽기
    while ((character = fgetc(filePointer)) != EOF) {
        putchar(character); // 문자를 화면에 출력
    }

    // 파일 닫기
    fclose(filePointer);
}

 

 

 

위 예시의 결과는 Hello, World!가 출력된다.

 

 

2. fputc

 

fputc는 파일에 한 문자씩 저장하는데 사용된다.

이 함수는 파일 포인터를 받아 해당 파일에 문자를 저장하며 사용예시는 다음과 같다.

 

#include <stdio.h>

int main() {
    FILE *filePointer;
    filePointer = fopen("output.txt", "w");
    
    if (filePointer == NULL) {
        printf_s("파일 열기에 실패했습니다.");
        return 1;
    }

    int character;

    // 파일에 문자 쓰기
    for (character = 'A'; character <= 'Z'; character++) {
        fputc(character, filePointer);
    }

    // 파일 닫기
    fclose(filePointer);
}

 

위 예시의 결과는 A~Z까지 output.txt에 저장이 된다.

 

 

3. fgets

 

fgets는 파일에서 문자열을 읽어오는 데 사용된다.

문자열을 읽어와야 하므로  fgetc 처럼 변수 하나가 아닌

버퍼로 사용할 문자열 배열이 필요하며 읽을 최대 문자의 수도 지정해 줘야 한다.

 

char line[100]; //문자열 버퍼

// 파일에서 문자열 읽기
while (fgets(line, sizeof(line), filePointer) != NULL) {

    printf_s("읽은 문자열: %s", line);
}

 

 

4. fputs

 

fputs는 문자열을 파일에 저장하는 데 사용된다.

이 함수는 쓰고자 하는 문자열과 파일 포인터를 인수로 받아 파일에 저장하며 다음은 fputs의 사용 예시이다.

 

#include <stdio.h>

int main() {
    FILE *filePointer;
    filePointer = fopen("output.txt", "w");
    
    if (filePointer == NULL) {
        printf_s("파일 열기에 실패했습니다.");
        return 1;
    }

    const char *message = "Hello, World!\n";

    // 파일에 문자열 쓰기
    if (fputs(message, filePointer) != EOF) {
    
        printf_s("파일에 문자열을 성공적으로 썼습니다.");
        
    } else {
    
        printf_s("파일에 문자열을 쓰는데 실패했습니다.");
    }

    // 파일 닫기
    fclose(filePointer);
}

 

위 예시의 결과는 output.txt에 Hello, World!의 문자열이 저장된다.

728x90
Comments