Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
Today
Total
관리 메뉴

Code Habit

c/c++ 파일 읽고 쓰기 : fgets, fputs 본문

카테고리 없음

c/c++ 파일 읽고 쓰기 : fgets, fputs

코드베어 2020. 10. 2. 23:23

파일을 I/O를 활용하여 리스트 정보(고객 명단 등)를 간단하게 로컬에 저장하고 읽고 싶을 때 fgets/fputs 함수를 사용하면 쉽게 구현할 수 있다. fputs 함수로 파일에 한줄 단위로 문자열을 저장하고 저장된 문자열을 줄별로 다시 fgets 함수로 읽어 들일 수 있다. 

 

참고로 필자는 개발한 프로그래밍의 블랙리스트 명단을 로컬에 저장하고 읽어들이기 위해 위의 함수들을 활용하였다. 

 

예제이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int main(void)
{
    // 파일 쓰기모드 생성/열기
    FILE *fp = fopen("test.txt""w");
    if (NULL == fp) {
        return -1;
    }
 
    fputs("1 line\n", fp);
    fputs("2 line\n", fp);
    fputs("3 line\n", fp);
 
    fclose(fp);
}
 

"w"-쓰기모드로 파일을 열기 간히 3줄의 문자열을 썼다. 여기서 '\n' 개행문자가 빠지면 한줄에 입력되니 주의하자.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
 
int main(void)
{
        // 파일 읽기모드 열기
    FILE *fp2 = fopen("test.txt""r");
    if (NULL == fp) {
        return -1;
    }
 
    char buffer[256= { 0, };
    while (1)
    {
        char* psz = fgets(buffer, 256, fp2);
        if (NULL == psz) {
            break;
        }
        printf("%s", buffer);
    }
 
    fclose(fp2);
 
    return 0;
}
 

"r"-읽기 모드로 파일을 열고 fgets 함수로 파일의 내용을 한줄씩 읽어들인다. NULL이 반환되면 파일이 더이상 읽어들일 문자열이 없다는 것이므로 break로 while문을 빠져나오고 프로그램은 종료된다. 참고로 fgets 함수는 '\n'-줄바꿈 문자까지만 읽어들이므로 파일의 내용을 한줄씩 가져올 수 있다.