목차
[C Programming] 텍스트 파일 읽기
이번 포스트는 텍스트 파일을 읽는 방법에 대해 알아보도록 하겠습니다. 다음 포스트는 쓰기에 대해 알아보겠습니다. 코드를 이해하기 위해 간단한 예제를 통해 설명을 드리겠습니다.
예제 코드>>
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[]) {
// 파일 인자가 전달되지 않았을 경우 경고 메시지 출력
if (argc < 2) {
printf("파일을 입력해주세요.\n");
exit(EXIT_FAILURE);
}
// 첫 번째 인자로 전달된 파일 이름으로 파일 열기
FILE* file = fopen(argv[1], "r");
// 파일 열기에 실패했을 경우 경고 메시지 출력
if (file == NULL) {
printf("파일을 열 수 없습니다.\n");
exit(EXIT_FAILURE);
}
// 파일 내용을 읽어서 화면에 출력
char ch;
while ((ch = fgetc(file)) != EOF) {
putchar(ch);
}
// 파일 닫기
fclose(file);
return 0;
}
결과>>
주석>>
#define _CRT_SECURE_NO_WARNINGS는 Visual Studio에서 파일 관련 함수(fopen, scanf, printf 등)를 사용할 때 발생하는 보안 경고를 무시하도록 지시하는 전처리기 디렉티브입니다. 이 디렉티브를 코드에 추가하면 컴파일러에서 발생하는 보안 경고 메시지가 표시되지 않습니다.
만일 해당 문구를 입력하지 않으면 아래와 같은 C4996 에러와 함께 Build가 되지 않습니다.
Severity Code Description Project File Line Suppression State
Error C4996 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. test D:\c_programming\test\test.c 13
EXIT_FAILURE는 stdlib.h 헤더 파일에 정의된 상수로, 일반적으로 1의 값을 가집니다. 따라서 프로그램이 실패했을 때 exit(EXIT_FAILURE)을 호출하면 반환 값이 1인 상태로 프로그램이 종료됩니다.
if (argc < 2)
위 문구는 text.exe 실행파일과 text.txt 읽을 파일에 대한 입력값(Argument)가 최소 2개가 있어야 한다는 의미 입니다.
FILE* file = fopen(argv[1], "r");
file이라는 구조체 변수에 파일에 대한 정보를 입력 해줍니다. r은 읽기 전용입니다. 인자별 설명은 아래 테이블을 참조하세요.
char ch;
while ((ch = fgetc(file)) != EOF) {
putchar(ch);
}
fgetc로 문자 하나씩 받아서 EOF가 나올때 까지 텍스트 값을 읽어서 putchar를 사용해서 출력 해줍니다.
[C Programming] 텍스트 파일 읽기 예제 코드 다운로드
'C언어 C++ Programming' 카테고리의 다른 글
[C언어]Visual Studio 지역 변수의 스택 값 확인(Local Variable, Stack Memory) (0) | 2023.07.17 |
---|---|
[C언어] 라이브러리 만들기, 읽기(dll, lib, 외부 코드, library import, 추가) (0) | 2023.07.14 |
[C언어]지역변수와 스택메모리란? 예제로 이해하기(Local Variable, Stack) (0) | 2023.07.12 |
CPU 레지스터와 캐시, 종류 및 동작 방법(Register, Cache) (0) | 2023.07.11 |
[C++언어]예외 처리 방법 (try, catch, throw) (0) | 2022.01.07 |