size_t fwrite (const void* buf, size_t size, size_t count, FILE *stream);stream에 데이터 쓰기
Parameters
- const void *buf
기록할 데이터가 저장된 배열
void * -> 모든 자료형을 가리킬 수 있음
- size_t size
데이터 (배열 원소 하나의) 크기 (Byte)
- size_t count
저장할 데이터 개수
- FILE *stream
fopen 으로 얻은 FILE 포인터
Return value
- 성공: count
- 실패: count가 아닌 값
👀 size_t
= 이론상 가장 큰 사이즈를 담을 수 있는 unsigned data type (C99)
- 이식성 문제 (CPU 레지스터 크기)
- 32bit OS : unsigned 32bit 정수
- 64bit OS : unsigned 64bit 정수
- 반복문, 배열 index, length
- sizeof( ) return type 등..
- 📌 signed형 데이터와 연산 시 캐스팅 주의 (음수 -> 양수)
size_t fread (void* buf, size_t size, size_t count, FILE *stream);stream에서 size길이의 count수 만큼 읽어서 buf에 저장
※ 저장할 버퍼는 0으로 초기화 해줘야 함
Parameters
- void *buf
데이터가 저장된 배열
- size_t size
데이터 (배열 원소 하나의) 크기 (Byte)
- size_t count
읽어들일 데이터 개수
- FILE *stream
fopen 으로 얻은 FILE 포인터
Return value
- 성공: count
- 실패: 실제로 읽어야 할 원소의 개수가 아닌 값 (count가 아닌 값)
int fprintf (FILE* stream, const char* format, argument-list)fprintf (파일 스트림, 서식 지정자, 인수)
스트림에 형식화된 데이터 쓰기
- 성공: 출력한 문자 수
- 실패: 음수 값
int fscanf (FILE* stream, const char* format, argument-list)fscanf (파일 스트림, 서식 지정자, 인수)
스트림에서 형식화된 데이터 읽기
- 성공: 읽어들인 문자 수
- 실패 or 파일의 끝에 도달하면 EOF
int fputs (const char* str, FILE* stream)fputs (문자 배열, 파일 스트림)
str이 가리키는 문자열을 stream에 쓰기.
str이 \0(NULL)에 도달할 때 까지 스트림에 복사함.
- 성공: 음이 아닌 수
- 실패: EOF
char* fgets (char* str, int num, FILE* stream)fgets (문자열 저장할 배열, 읽어들일 문자 수 - 1, 파일 스트림)
스트림에서 \n(개행) 까지 읽거나, (num-1)개의 문자 읽기.
읽어들인 결과를 str에 저장하고, 끝에 \0(NULL) 추가.
- 성공: str(문자열 가리키는 포인터)
- 실패 or EOF도달: NULL
- fwrite는 \0(NULL)을 만나더라도 계속 출력하지만 fprintf는 종료.
- fgets는 개행 문자(\n)를 만나면 읽기를 멈추고 끝에 자동적으로 \0(NULL) 추가해줌.
- fread는 (\n)과 상관 없이 지정된 크기 만큼 읽음.
- 일반 텍스트가 아닌 Binary Data를 처리하려면 fwrite/fread
- 서식 지정이 필요한 경우 fscanf, fprintf