2010.08.18 14:14

  프로그램에서 사용하는 표현과 동일한 표현으로 데이터를 파일에 저장할 때, 그 데이터가 바이너리 형태(binary form)로 저장된다고 합니다.  수치가 문자열로 변환되는 일이 일어나지 않지요.
 표준 입출력의 경우에, fread()와 fwrite() 함수가 이와같은 바이너리 서비스를 제공합니다.

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

fwrite() 매개변수 설명
- buffer : 저장할 데이터 덩어리의 주소,
- size : 저장할 데이터 덩어리들의 크기,
- count : 저장할 데이터 덩어리들의 수,
- stream : 데이터가 저장될 파일

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

fread() 매개변수 설명
- buffer : 파일로부터 읽은 데이터를 저장할 메모리 공간의 주소
- size : 데이터들의 크기
- count : 데이터들의 수
- stream : 데이터를 읽을 파일

예제를 보면서 설명하겠습니다.

1. 구조체 선언



2. 구조체 정의 및 파일 입출력
 

 보신것처럼 Book구조체 배열b1에 Book1개의 공간을 정의하고
배열b1의 첫번째 공간에 페이지의 수, 가격, 도서명을 입력 후 20번째 줄의 fwrite()를 이용하여 저장을합니다.
 그 후 읽어드릴때는 Result라는 Book형의 배열을 선언하고 그 첫번째 공간에 fread()함수를 이용하여 옮겨담았습니다.

3. 출력 결과 및 파일입출력 결과


< 실행파일 >
저작자 표시 비영리 변경 금지
신고
Posted by Daos
2010.08.06 02:10

안녕하세요. Daos입니다.

 이번에는 fprintf()와 fscanf()를 이용하여 파일입출력에 대해 알아보겠습니다.
fprintf()와 fscanf()는 printf()와 scanf()와 같은 방식으로 동작하는데 부가적으로 첫번째 전달인자에 적당한 파일을 넘긴다는 점이
다릅니다.
 실제 사용의 예를 보면서 알아봅시다.

간단한 이름, 나이, 시력을 입력받고 파일로 저장. 그리고 불러와서 출력해주는 예제 프로그램입니다.

< Sample Code >


< 출력결과 및 fprintf.txt파일확인 >

저작자 표시 비영리 변경 금지
신고
Posted by Daos
2010.08.01 23:41

 오늘은 fgets(), fputs()에 대해서 알아보겠습니다.
 fgets()와 fputs()는 파일포인터에 문자열을 읽고 쓰는 함수입니다.
 fgets()함수는  읽을 문자들의 최대 개수를 지정함으로써 gets()의 약점( 입력이 확보한 기억 공간에 맞는지 검사하지 않고, 확보한 기억 공간을 채우고 남는 문자들은 이웃한 메모리로 흘러넘친다)을 해결합니다.
 fgets()는 개행 문자를 읽어 그 문자열에 저장하고, n-1개까지 문자들을 읽거나 개행 문자가 나올때 까지 읽습니다.
개행 문자를 읽고 버리는 gets()와는 다르다.
 fputs()함수는 puts()와는 달리 출력할 때 개행 문자를 덧붙이지 않습니다.
 fgets()가 개행 문자를 유지하고, fputs()는 개행 문자를 덧붙이지 않기 때문에 서로 협력하여 잘 동작합니다.

char
*fgets( char *string, int n, FILE *stream );
int fputs( const char *string, FILE *stream );


< 파일입출력 테스트 Source >


<fputs.txt파일 확인>

저작자 표시 비영리 변경 금지
신고
Posted by Daos
2010.07.28 12:38

먼저 fgetc와 fputc를 살펴보겠습니다.

fgetc()와 fputc()는 파일로부터 문자 하나씩을 읽고 쓰는 함수입니다.

int fgetc( FILE *stream );

int fputc( int c, FILE *stream );



 


< 간단한 파일입출력 Test Source >


< 출력 결과 및 파일생성 확인 >


 

저작자 표시 비영리 변경 금지
신고
Posted by Daos

티스토리 툴바