상세 컨텐츠

본문 제목

C언어 텍스트, 바이너리 파일 읽기 쓰기

IT/C

by J KIMS 2020. 12. 2. 21:56

본문

반응형

 

 

1. 텍스트 파일 읽는 법

 

먼저 불러들일 텍스트 파일 input.txt에는 숫자 세개가 적혀있다.

이제 C언어로 파일을 읽어 이 숫자들을 변수에 저장할 것이다.

 

 

 

컴파일후 실행할 때 ./a.out input.txt 을 입력하면 정상적으로 실행 된다. (input.txt자리에 읽을 파일 이름 쓰기)

 

💡 부연 설명

- 커맨드에 입력한 파일 이름은 argv[1]에 저장됨

(argv 배열에는 커맨드라인에 입력한 내용이 띄어쓰기로 구분되어 담긴다)

- fopen 함수는 파일을 여는 기능 / "r" : 파일 읽기 모드

- 변수 fp에 파일을 가리키는 포인터가 저장됨

- fscanf 함수는 파일에 있는 내용을 주어진 변수에 저장함. 이 경우 텍스트에 적힌 숫자 세개를 각 변수 num1, num2, num3에 저장함

- fclose 마지막에는 파일을 꼭 닫아줘야 함 

 

2. 텍스트 파일 쓰는 법

 

이번에는 텍스트를 불러온 다음 프로그램 내부에서 수정을 해서 수정한 내용으로 새로운 텍스트 파일을 만들 것이다.

 

 

파일을 불러오는 과정은 1번에서 했던 것과 동일하다.

불러온 숫자들에 100을 더해서 새로운 텍스트 파일에 저장했다.

 

실행할 때는 ./a.out input.txt output.txt 의 형식으로 입력한다.

(input자리에 읽을 파일 이름, output자리에 새로 만들 파일 이름)

 

실행 결과

 

💡 부연 설명

- 이번에는 두 개의 파일이 필요하기 때문에 FILE* 변수를 두 개 선언했다 (fp1, fp2)

- fopen의 "w"는 쓰기모드를 의미함

- fprintf 함수로 fp2가 가리키는 파일(output.txt)에 변수의 내용들을 저장함

 

 

3. 바이너리 파일 쓰는 법

 

여기서는 input.txt의 내용을 읽어와 바이너리 파일로서 저장할 것이다.

 

 

실행 커맨드 :

./a.out input.txt output.bi

 

💡 부연 설명

- 바이너리 파일을 쓸 때는 fopen을 바이너리 파일 쓰기 모드 "wb" 로 설정한다

- fwrite는 바이너리 파일을 쓰는 함수

- fwrite(값이 담겨 있는 변수의 주소, 저장할 변수의 크기, 저장할 변수의 개수, 저장할 파일)

- 첫줄에서 num1을 저장하고 나면 자동으로 포인터가 그 다음으로 이동하기 때문에 파일에 num1, num2, num3이 차례차례 저장된다

 

4. 바이너리 파일 읽는 법

 

이제 위에서 저장한 바이너리 파일을 읽어올 차례

 

실행 커맨드 : 

./a.out output.Bi

 

💡 부연 설명

- fopen은 바이너리 읽기 모드 "rb" 설정

- 바이너리 파일을 읽을 때는 fread를 쓴다 

- fread(값을 저장할 변수의 주소, 변수 크기, 변수 개수, 읽을 파일)

 

 

5. 배열을 이용해서 바이너리 파일 쓰기

 

기본 원리는 같기 때문에 배열명 자체가 어드레스인점, 변수 크기에만 신경쓰면 된다.

 

 

 

6. 배열을 이용해서 바이너리 파일 읽기

 

이것도 기본원리는 같다. 오히려 이쪽이 더 프로그램이 단순하기 때문에 여러 개의 값들을 불러올 땐 배열을 쓰는 게 훨씬 편하다.

 

 

 

7. 정리

 

  fopen 모드 설정 필요한 함수들
텍스트 파일 읽기 r fscanf
텍스트 파일 쓰기 w fprintf
바이너리 파일 읽기 rb fread
바이너리 파일 쓰기 wb fwrite

 

저는 실험 데이터의 입출력에 c언어가 필요해서, c언어 자체의 기술적인 면보다는 상황 별로 필요한 코드에 초점을 맞춰서 정리해봤습니다. 혹여 잘못된 부분이 있으면 지적부탁드립니다.

반응형

관련글 더보기

댓글 영역