티스토리 뷰


//141005 Source by YoWu(uyu423@gmail.com)

#include "stdio.h"
#include "stdlib.h"

int main(void) {
	FILE *rfp, *wfp;
	char buf[BUFSIZ];
	int n;

	if((rfp = fopen("abc.txt", "r")) == NULL) {
		perror("fopen: abc.txt");
		exit(1);
	}

	if((wfp = fopen("ac.txt", "w")) == NULL) {
		perror("fopen : ac.txt");
		exit(1);
	}

	while((n=fread(buf, sizeof(char) * 2, 1, rfp)) > 0) {
		fwrite(buf, sizeof(char), n, wfp);
	}

	fclose(rfp);
	fclose(wfp);

	return 0;
}


위 예제는 유닉스 시스템 프로그래밍 2장 연습문제의 4번에  해당합니다. 문제는 대충 문자 두개가 있을 때 앞에 하나만 출력하는 그런 문제


fread 함수 원형

size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );

ptr : 저장할 버퍼

size : 읽어올 데이터 크기

count : 읽어올 데이터 갯수

stream : 읽어올 파일 디스크립터


fwite 함수 원

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

ptr : 읽어올 버퍼

size : 파일 디스크립터에 기록할 데이터 크기

count : 기록할 데이터 갯수

stream : 기록할 디스크립터



프로필사진

Yowu (Yu Yongwoo)

흔한 백엔드 개발자입니다
우분투 데스크탑 개발 환경을 선호합니다
최근에는 vscode에 neovim 모드 올려서 쓰고 있습니다
개발용 키보드는 역시 해피해킹 프로2 무각입니다
락 밴드에서 드럼을 쳤습니다

«   2020/02   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
글 보관함
Total
2,651,800
Today
577
Yesterday
1,319