개념 - 파일입출력 (1)

5037 단어 CC

파일 입출력 함수의 도우미 : FILE구조체

  • 사용하려는 디스크상의 파일이 어떤 상태로 사용중인지에 대한 정보 담음
  • 파일 좀 더 편하게 사용하도록 도움
  • 표준 입출력 라이브러리에서 파일 입출력 함수를 호ㅗ출할 때마다 FILE구조체의 포인터 변수를 넘겨주도록 구성

FILE *변수 이름

  • 파일 구조체로 선언한 포인터 변수 => 파일 포인터
  • 프로그래머가 파일 처리에 관한 내부정보를 알지 못해도 파일 포인터만 넘겨주면 파일 입출력 함수가 알아서 하게 해줌

파일 열기 함수 : fopen

함수 원형 : FILE *fopen(const char *filename, const char *mode)

함수 사용 형식 : fopen(사용할 파일 이름, 파일 사용 형식);

  • 읽기,쓰기 등 어떤 목적으로 사용할 것인지에 따라서 달라진다
FILE* p_file = fopen("tipsoft.dat", "r");
if (NULL != p_file) {
	//파일 열기에 성공한 경우
}
else {
	//파일 열기에 실패한 경우
}

파일 사용 형식

파일이 다루는 속성에 따라 (t/b)

  • t: 텍스트 속성으로 파일 사용
  • b: 바이너리 속성으로 파일 사용

파일 내용 읽기 모드 "r"

  • r: 읽기 목적으로 파일을 연다
    => 파일이 없으면 실패한다
FILE *p_file("tips.dat","rb");
FILE *p_file("tips.txt","rt");

파일 내용 쓰기 모드 "w" 덮어쓰기 모드

  • r: 읽기 목적으로 파일을 연다
  • 파일이 없으면 파일을 새로 하나 만든다
  • 같은 이름의 파일이 이미 있는 경우 파일을 열면서 파일 내용을 삭제
  • 디스크에 용량 부족하거나 읽기 전용모드에 쓰기 모드 사용하면 파일 열기에 실패
FILE *p_file("tips.dat","wb");
FILE *p_file("tips.txt","wt");

파일에 데이터 이어쓰기 모드 "a"

  • a: 읽기 목적으로 파일을 연다
  • 동일 파일에 쓰기 모드로 쓰되, 이어서 쓰고 싶다
FILE *p_file("tips.dat","ab");
FILE *p_file("tips.txt","at");

읽기와 쓰기 같이 사용

읽기 강조 "r+"

  • 읽기 모드로 열되, 쓰기도 가능
  • 기존 파일이 있으면 해당 파일의 내용을 지우지는 않지만 기존 데이터의 위치로 이동해서 해당 위치의 내용을 덮어쓸 수 있다
    => 유일하게 내다 원하는 위치로 가서 해당 데이터 변경할 수 있는 아이

쓰기 강조 "w+"

  • 기존 파일 없으면 새로 생성가능
  • 기존 파일 있으면 기존 파일 내용을 모두 지우고 시작

읽기와 이어쓰기 같이 사용 "a+"

  • 파일 내용 지우지 않고 이어쓴다
  • 파일의 끝에 내용이 추가, 헤딩 위치로는 못 가고 끝 위치에서 가능

파일 닫기 : fclose

int fclose(FILE *stream)
fclose(파일 포인터)
  • fopen함수 사용해 파일을 사용하다 사용이 끝나면 fclose함수를 사용해 파일을 닫는다
  • 파일 열어놓고 파일 닫지 않으면 파일 내용이 지워지거나 파일을 사용할 수 없는 상태
FILE* p_file = fopen("tipsoft.dat", "r");
if (NULL != p_file) {
	//파일 열기에 성공한 경우
    fclose(p_file);//파일을 닫음
}
else {
	//파일 열기에 실패한 경우
}

좋은 웹페이지 즐겨찾기