티스토리 뷰


//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에 vim 모드 올려서 쓰고 있습니다
개발용 키보드는 역시 해피해킹 프로2 무각입니다
락 밴드에서 드럼을 꽤나 오래 쳤었습니다