HW & SW Interface/System Programming
3. File I/O - library calls(2)
yeommm
2020. 5. 5. 15:48
# File Open
filename의 파일을 type 모드로 열기
#include <stdio.h>
File *fopen(const char *filename, const char *type);
parameters
- filename: 파일 이름 (string)
- type: 파일 접근 모드
type | 의미 |
r | read-only |
w | write/ 파일이 존재하면 덮어쓰고, 존재하지 않으면 생성 |
a | append mode(EOF), write-only/ 파일 존재하지 않으면 생성 |
r+ | read + write |
w+ | read + write/ 파일이 존재하면 덮어쓰고, 존재하지 않으면 생성 |
a+ | read/append mode(EOF)/ 파일 존재하지 않으면 생성 |
return
- 성공 -> file stream pointer
- 실패 -> NULL
# File Reopen
file stream(파일 객체)을 닫고 filename을 파일 객체(stream)로 연결.
#include <stdio.h>
FILE *freopen(const char *filename, const char *type, FILE *stream);
parameters
- filename: 파일 이름 (string)
- type: 파일 접근 모드
- stream: 파일 객체
return
- 성공 -> file stream pointer
- 실패 -> NULL
# File Close
file stream 닫기
#include <stdio.h>
int fclose(FILE *stream);
return
- 성공 -> 0
- 실패 -> EOF
# File I/O functions
string 형태로 버퍼에 저장하는(읽고 쓰는) 형식
파일 읽기
stream에서 nitems만큼의 데이터를 읽어와서, ptr이 가리키는 버퍼에서 쓰기
size_t fread(void *ptr, size_t size, size_t nitems, FILE *stream)
parameters
- ptr: 파일로부터 읽어들인 데이터를 저장할 주소 버퍼 포인터
- size: 파일 obj의 유닛 사이즈(실제 크기/ bytes)
- nitems: 읽어들일 obj의 개수
- stream: 읽을 파일 포인터
return
- 성공 -> 읽어들인 파일의 데이터 수
- 실패 -> EOF
파일에 쓰기
ptr이 가리키는 버퍼에서 nitems만큼의 데이터를 가져와, stream에 쓰기
size_t fwrite(void *ptr, size_t size, size_t nitems, FILE *stream)
parameters
- ptr: 데이터를 가지고 있는 버퍼 포인터
- size: 파일 obj의 유닛 사이즈(실제 크기/ bytes)
- nitems: 쓸 obj의 개수
- stream: 쓸 파일 포인터
return
- 성공 -> 쓴 파일의 데이터 수
- 실패 -> EOF
# Character Input & Output
char 형태로 버퍼에 저장하는(읽고 쓰는) 형식
Input
//return integer
int getc(FILE *stream);
int fgetc(FILE *stream);
int getchar();
//return string address
char *fgets(char *s, int size, FILE *stream);
char *gets(char *s);
//return c
int ungetc(int c, FILE *stream);
Output
//return integer
int putc(int c, FILE *stream);
int fputc(int c, FILE *steram);
int putchar(int c)
//return number of chars
int *fputs(const char *s, FILE *stream);
char *puts(const char *s);