본문 바로가기

프로그래밍/C 프로그래밍

[C언어] 파일 입출력

# 파일 입출력

파일 : 보조기억장치(디스크)에 들어있는 정보들의 모임.
- 일련의 바이트(byte)들로 구성
- C 프로그램은 운영체제를 통해서 파일을 읽거나 쓰게 된다.
- C언어에서는 컴퓨터와 연결된 장치들까지도 모두 파일의 범주에 넣어 처
  • 보조기억장치의 파일을 이용한 자료의 입출력 👉 파일 처리함수를 이용
  • 키보드나 모니터를 통한 자료의 입출력 👉 표준 입출력함수 이용
  • 파일포인터를 사용하여 파일 입출력 수행
  • 파일을 입출력할 때 버퍼(buffer)사용

# 2진파일

  • 텍스트 파일을 포함한 모든 종류의 자료를 다루는 파일
  • 컴파일 되어 있어 기계어에 가까우므로 내용을 이해하고나 인쇄가 불가능.

# 버퍼

  • 기억 공간과 디스크 사이에 존재하는 임시 기억 공간
  • 파일 입출력 시 디스크에 저장된 자료를 기억공간으로 읽어 들이거나, 기억 공간에서 처리된 자료를 디스크에 저장할 때 사용

# 스트림: 자료의 입출력을 위한 논리적인 통로

  • 표준 입출력장치를 이용한 자료 입출력
    • 표준 입출력장치와의 스트림은 프로그램 실행 시 자동으로 생성되고, 프로그램 종료 시 자동으로 소멸된다.
    • 파일 입출력을 위한 스트림은 프로그램을 통해 생성 및 소멸시켜주어야 한다.
  • 스트림 생성
    • 파일과 프로그램과의 통로(논리적 접속) 구성
    • 통로 역할을 파일포인터가 수행.
  • 파일 입출력 수행과정
1. 파일을 연다 - 스트림생성(fopen()함수)
2. 입출력을 수행한다.
3. 파일을 닫는다. - 스트림소멸 (fclose()함수)

 

# 파일 포인터 선언

  • 파일 입출력을 위해서는 맨 처음 파일포인터를 선언해야 한다.
  • 이 파일 포인터는 실제 파일과 프로그램을 연결해주는 통로가 된다.
FILE *변수명;
FILE형: 구조체형
FILE형 포인터변수: 파일에 대한 여러 가지 정보를 가진 변
  • fopen() : 파일 열기 
    • 입출력이 정상이면 지정된 파일의 파일포인터에 시작주소 값을 리턴
    • 파일이 개방되지 않을 때는 에러 값 리턴
    • 사용(개방) 모드: 파일 접근 모드 + 데이터 입출력 모드
      • 데이터 입출력모드(t,b)
      • t: 텍스트모드 : 프로그램에서 파일로 자료를 입출력할 때 변환이 일어나는 모드
        • 문자 변환이 필요(\n <-> CR/LF)
      • b: 2진모드 : 변환이 일어나지 않는 입출력 모드 (문자 변환 불필요)
  • fclose(): 개방된 통로와 버퍼를 원래 상태로 환원
    • 쓰기의 경우 파일 끝에 EOF(Enf of File) 신호를 부가(완전한 파일로 완성됨)

 

# 파일처리함수

  • fseek(): 파일에서 입출력 위치 이동
  • feof(): 파일의 끝인가를 판별
  • ferror(): 파일 입출력 시 에러 발생 유무 조사
  • fwrite(): 파일에 정해진 크기의 자료를 정해진 개수만큼 쓰기
  • fread(): 파일로부터 정해진 크기의 자료를 정해진 개수만큼 읽기

 

# 순차파일처리

  • 파일은 레코드 단위로 구성
    • 레코드 : 파일 입출력 처리에 사용되는 논리적 기본 단위
    • 각 레코드들은 필드로 구성
  • 순차 파일(sequential file)
    • 파일의 처음부터 자료를 차례로 읽고, 기록
    • 레코드의 길이가 일정하지 않다 👉 레코드 구분이 필요(CR/LF사용)

CR/LF를 사용하여 구분

  • 랜덤파일
    • 파일의 임의의 위치에서 자료를 읽고, 기록
    • 레코드의 길이가 일정하다.
반응형

'프로그래밍 > C 프로그래밍' 카테고리의 다른 글

[C언어] 기억클래스  (0) 2024.06.07
[C언어] typedef  (0) 2024.06.06
[C언어] 메모리 동적 할당  (1) 2024.06.06
[C언어] 파일처리함수  (0) 2024.06.06
[C언어] 구조체와 공용체  (0) 2024.06.06