Computer Security

#4 파일 읽고 쓰기 본문

리눅스 시스템 프로그래밍

#4 파일 읽고 쓰기

쿠리 Kuri 2022. 9. 9. 18:30
반응형

파일 내용 읽고 쓰기

 

Text mode

- 문자를 저장할 때 사용되는 방식

- "10" 저장시 파일에는 0x31, 0x30이 저장된다.

 

 

(텍스트 모드에서 쓰고, 읽을 수 있는 함수)

- fputc/fputs/fprintf

- fgetc/fgets/fscanf

 


Binary mode

- 데이터를 저장할 때 방식

- 10 저장시 파일에 0x0a 가 저장됨

 

 

(바이너리 파일로 쓰고,읽을 수 있는 함수)

- fwrite/fread 

 

 

리눅스에서는 바이너리 파일과 텍스트 파일의 구분이 없다.

쓰는 함수에 따라서 자동적으로 텍스트 모드로 쓸 것인지 바이너리 모드로 쓸 것인지 결정된다.

 

 

 

 


파일에 쓰기 - formatted 

int fprintf(FILE *stream, const char *format, ...);

파라미터

- stream : 열린 파일 포인터

- format : 출력 포맷

- ...: 가변 arguments

 

 

반환 값

- 성공시 쓰여진 바이트 값

- 실패시 음수

 

 

 

 


파일에서 일기 - formatted

int fscanf(FILE *stream, const char *format, ...);

파라미터

- stream : 열린 파일 포인터

- format : 입력 포맷

- ...: 가변 arguments

 

 

반환 값

- 성공시 입력받은 아이템 개수

- 실패시 EOF

 

 

 

 


포맷 변환1

변환자
d signed integer
u unsigned integer, 10진수
o unsigned integer, 8진수
x unsigned integer, 16진수, (abcde)
X unsigned integer, 16진수, (ABCDE)
s NULL-terminated string
f floating-point, [-]ddd.ddd
e floating-point, [-]d.ddde±dd

 

 

 

 


포맷 변환2

integer길이
hh sizeof(char)
h sizeof(short)
(생략) sizeof(int)
l (엘) sizeof(long)
ll (엘엘) sizeof(long long)

 

 

 

 


포맷 변환 정리

데이터 타입 변환자
char %hhd, %hhx
unsigned char %hhu, %hhx
short %hd, %hx
unsigned short %hu, %hx
int %d, %x
unsigned int %u, %x
long %ld(엘디), %lx(엘엑스)
unsigned long %lu(엘유), %lx(엘엑스)
long long %lld(엘엘디), %llx(엘엘엑스)
unsigned long long %llu(엘엘유), %llx(엘엘엑스)

 

 

 

 


파일에 쓰기 - character / string

 

int fputc(int c, FILE *stream);

파라미터

- c : 출력할 character

- stream : 열린 파일 포인터

 

 

반환 값

- 성공시 쓰여진 character

- 실패시 EOF

 

 

 


int fputs(const char *s, FILE *stream);

파라미터

- s : 출력할 string(NULL-terminated)

- stream : 열린 파일 포인터

 

 

반환 값

- 성공시 0보다 크거나 같은 수

- 실패시 EOF

 

 

 


int fgetc(FILE *stream);

파라미터

- stream : 열린 파일 포인터

 

 

반환 값

- 성공시 읽은 character 값

- 실패시 EOF 

 

 

 


char *fgets(char *s, int size, FILE *stream);

파라미터

- s : 스트링 버퍼

- size : 버퍼 사이즈

- stream : 열린 파일 포인터

 

 

반환 값

- 성공시 캐릭터 포인터(스트링)

- 실패시 NULL

 

 

 


파일에 쓰기 - byte stream

size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

파라미터

- ptr : 출력할 byte stream 포인터

- size : 출력 아이템 사이즈

- nmemb : 출력 아이템 개수

- stream : 열린 파일 포인터

 

 

변환 값

- 실제로 출력된 아이템 개수

- 완전하게 쓰여졌는지 확인 필요

 

반응형
Comments