본문 바로가기
개발/C, C++

C, C++ - 정수로된 FILE 입력

by 피로물든딸기 2021. 3. 14.
반응형

C, C++ 전체 링크

C, C++에서 FILE을 정수로 된 FILE을 읽어보자.
input.txt는 아래와 같다.


코드는 아래와 같다.

#include <stdio.h>

#define INPUT_FILE "input.txt"

int main(void)
{
	FILE *fp = fopen(INPUT_FILE, "r");
	if (fp == NULL)
	{
		printf("Wrong Input : %s\n", INPUT_FILE);
		return 0;
	}

	int input;
	while (fscanf(fp, "%d", &input) != EOF)
	{
		printf("%d\n", input);
	}

	return 0;
}


input.txt file을 define으로 정의해서 다른 코드에서도 관리하기 쉽도록 한다.
FILE pointer fp에 INPUT_FILE을 받는다. 파일을 읽기 때문에 read mode인 "r"로 설정한다.

fopen은 파일이 없는 경우 NULL을 return하므로 예외처리를 할 수 있다.

이제 fscanf로 file의 숫자를 하나씩 입력 받는다.
파일의 끝 End of File(-1)인 경우 fscanf는 -1을 return 한다.
따라서 while을 이용해 파일 끝까지 숫자를 받을 수 있다.


file mode에는 아래의 경우가 있다.

"r" : read, 읽기 전용으로 연다. 편집 불가.
"w" : write, 파일을 열어 편집하고, 새로 덮는다. 파일이 없다면 새로 만든다.
"a" : append, 파일의 뒤에서 부터 새로 붙인다. 파일이 없다면 새로 만든다.
"r+" : read+, 파일 읽고 쓰기가 모두 가능하다. 기존의 내용을 덮어쓴다.
"w+" : write+, 파일 읽고 쓰기가 모두 가능하다. 기존의 내용을 덮어 쓴다.
"a+" : append+, 파일 읽고 쓰기가 모두 가능하고, 파일의 뒤에서 부터 새로 붙인다.

그리고 rwa 뒤에 t/b를 붙여 옵션을 추가할 수도 있다.
(t : text 모드, b : binary 모드, default는 text)

반응형

'개발 > C, C++' 카테고리의 다른 글

scanf로 문자열과 공백 받기  (0) 2021.03.16
소수 판단 함수  (0) 2021.03.14
유일한 수 두개  (0) 2021.03.01
C, C++ - 최하위 / 최상위 비트 구하기 (Find MSB, LSB)  (1) 2021.03.01
유일한 수  (0) 2021.03.01

댓글