[C/C++] 텍스트 파일로 부터 한 글자(바이트)씩 읽고, 한 줄씩 읽어서 화면에 출력하기(read one character(byte) from a text file, line by line, and print it to the screen : fgetc(), fgets(), putchar() functions example)
안녕하세요 JollyTree(•̀ᴗ•́)و입니다. 파일의 내용을 읽는 방법은 여러가지가 있습니다. 그 중에서 fgetc(), fgets() 함수는 파일포인터(FILE*)를 이용하는 함수로 FILE *fp = fopen()의 fp를 파라미터를 이용합니다.
아래 예제는 파일을 오픈한 뒤 한 문자씩 읽어서 EOF 일때까지 반복하는 코드와 여러 줄로 된 텍스트 파일을 라인단위로 한 줄씩 읽어서 화면에 출력하는 내용을 포함하고 있습니다. 간단하지만 텍스트 파일을 읽어야 할 때 자주 사용되는 코드입니다.
예제(Example):
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #define FILE_NAME "maincodes.txt" int main() { FILE* fp = NULL; int ch; char buf1[256] = ""; char* buf2 = NULL; printf("한 문자(바이트)씩 읽기\n"); fp = fopen(FILE_NAME, "r"); if (fp == NULL) { printf("오픈 에러\n"); exit(0); } do { ch = fgetc(fp); //한 문자 읽기 putchar(ch); //읽은 한 문자 화면에 출력 } while (ch != EOF); fclose(fp); printf("\n\n텍스트 파일 내용 한 줄씩 읽기\n"); fp = fopen(FILE_NAME, "r"); if (fp == NULL) { printf("오픈 에러\n"); exit(0); } while (true) { buf2 = fgets(buf1, 256, fp); //한 줄씩 읽기 if (buf2 == NULL) break; printf("%s", buf1); } fclose(fp); return 0; } | cs |
실행결과(Output):
위 예제에서는 256바이트씩 고정해서 읽게 되어 있는데, 파일의 크기를 미리 구한다면 256바이트가 아닌 지정된 크기의 블럭 단위로도 읽을 수 있습니다. 파일의 크기를 구하는 자료는 아래 링크를 참고하세요.
- stat() 함수로 파일 크기 구하기 : https://maincodes.tistory.com/6
- fseek(), ftell() 함수로 파일 크기 구하기 : https://maincodes.tistory.com/14
이상 JollyTree였습니다. (•̀ᴗ•́)و 꾸벅!