문자, 문자열 확인함수
feof 함수
헤더 - stdio.h
형식 - int feof(FILE * Stream);
파일의 끝에 도달한 경우 0이 아닌 값 반환
용도 - 파일에 끝에 도달해서 제대로 복사같은 일이 이루어졌는지 아니면 에러가 난건지 확인하기위해
파일의 끝 == 더이상 읽을 데이터가 없는 시점
바이너리 데이터 입력함수
fread 함수
헤더 - stdio.h
형식 - size_t fread((void*) buffer, size_t size, size_t count, FILE * stream);
성공 시 전달인자 count, 실패 또는 파일의 끝 도달 시 count보다 작은 값 반환
가령,
int buf[12];
fread((void*)buf, sizeof(int), 12, fp); 는
fp로부터 데이터를 읽어들여서 buf에 저장하는데, sizeof(int) x 12. 즉 48바이트만큼 저장하라는 뜻이다.
다시말하면, fp로부터 데이터를 읽어 buf에 저장하돼 int형 데이터 12개만큼 읽어들여라라는 뜻이다.
위처럼 직관적으로 보일 수 있게 2번째 인자와 3번째 인자를 나눠놓은것이다.
읽을 데이터가 예를들어 25개가 있어서 12개씩 한번, 두번, 세번..읽어들일때
12개 ,12개, 남은1개가 출력이되면 count보다 작은값 1이 반환이 되는데 파일의 끝에 도달해서 더이상
읽어들일 데이터가 없기 때문이다.
바이너리 데이터 출력함수
fwrite 함수
헤더 - stdio.h
형식 - size_t fwirte(const void * buffer, size_t size, size_t count, FILE * stream);
성공 시 전달인자 count, 실패 또는 파일의 끝 도달 시 count보다 작은 값 반환
가령,
int buf[7] = {1, 2, 3, 4, 5, 6, 7};
fwrite((void*)buf, sizeof(int), 7, fp); 는
buf에 저장되어있는 데이터를 fp에 쓰는데 sizeof(int) x 7. 즉 28바이트만큼 써라
다시말하면, buf에있는 데이터를 fp에 쓰돼, int형 데이터 7개만큼 저장하라는 뜻이다.
여기도 2번째 인자와 3번째 인자를 나눠서 직관성을 높였다.
하나 주의해야 할점은, 앞의 fgets함수는 sizeof(자료형)같이 데이터의 크기를 쓸때
앞에 "최대"가 붙었는데 위의 바이너리 입출력함수들은 최대 최소 그런거없고 확실하게 그것만큼 입출력하라는 뜻이다.
static 전역변수 (0) | 2020.10.04 |
---|---|
텍스트 데이터와 바이너리 데이터를 동시에 입출력하는 함수 (0) | 2020.10.04 |
text모드의 숨겨진 특징 한가지 (0) | 2020.10.04 |
파일의 스트림(Stream), 입출력 (0) | 2020.10.04 |
10. 구조체 변수의 typedef 선언 (0) | 2020.10.04 |