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);