다음: 임시 기록철, 이전: 문자열 입력 변환, 상위 문서: C 형식 입출력 함수   [차례][찾아보기]


14.2.16 이진 입출력

옥타브는 이름이 같은 표준 C 함수를 본뜬 함수 freadfwrite을 사용하여 이진 자료를 읽고 쓸 수 있습니다. 두 함수는 자동으로 정수 자료의 바이트 순서를 바꾸고, 읽은 자료를 떠돌이 소수점 형식으로 바꿀 수 있습니다.

= fread (기록철_식별자)
= fread (기록철_식별자, 크기)
= fread (기록철_식별자, 크기, 정밀도)
= fread (기록철_식별자, 크기, 정밀도, 건너뛰기)
= fread (기록철_식별자, 크기, 정밀도, 건너뛰기, 얼개)
[, 개수] = fread (…)

기록철 기술자 기록철_식별자가 명시한 기록철에서 이진 자료를 읽습니다.

선택 인수 크기는 읽을 자료 양을 지정하며, 아래 가운데 하나를 주어도 됩니다.

Inf

최대한 많이 읽고, 열 벡터를 되돌려줍니다.

nr

원소를 nr개까지 읽고, 열 벡터를 되돌려줍니다.

[nr, Inf]

가능한 많이 읽고, 행이 nr개인 행렬에 되돌려줍니다. 읽은 원소 개수가 nr의 정수배가 아니면, 0으로 마지막 열을 메꿉니다.

[nr, nc]

원소를 nr * nc개까지 읽고, 행이 nr개인 행렬에 되돌려줍니다. 읽은 원소 개수가 nr의 정수배가 아니면, 0으로 마지막 열을 메꿉니다.

크기를 주지 않으면, Inf로 가정합니다.

선택 인수 정밀도은 읽을 자료의 형식으로 아래 가운데 하나입니다.

"uint8" (기본)

8두값 부호 없는 정수입니다.

"int8"
"integer*1"

8두값 부호 있는 정수입니다.

"uint16"
"ushort"
"unsigned short"

16두값 부호 없는 정수입니다.

"int16"
"integer*2"
"short"

16두값 부호 있는 정수입니다.

"uint"
"uint32"
"unsigned int"
"ulong"
"unsigned long"

32두값 부호 없는 정수입니다.

"int"
"int32"
"integer*4"
"long"

32두값 부호 있는 정수입니다.

"uint64"

64두값 부호 없는 정수입니다.

"int64"
"integer*8"

64두값 부호 있는 정수입니다.

"single"
"float"
"float32"
"real*4"

32두값 떠돌이 소수점 숫자입니다.

"double"
"float64"
"real*8"

64두값 떠돌이 소수점 숫자입니다.

"char"
"char*1"

8두값 문자 한 개입니다.

"uchar"
"unsigned char"

8두값 부호 없는 문자 한 개입니다.

"schar"
"signed char"

8두값 부호 있는 문자 한 개입니다.

기본 정밀도는 "uint8"입니다.

정밀도 인수로 반복 횟수도 지정할 수 있습니다. 예를 들어, ‘32*single’라고 적으면 fread가 단정도 떠돌이 소수점 숫자 32개짜리 구역을 읽습니다. 구역 읽기는 건너뛰기와 함께 사용하면 좋습니다.

정밀도 인수로 형변환도 할 수 있습니다. 예를 들어, ‘int16=>int32’라고 적으면 fread가 16두값 정숫값을 읽어 32두값 정숫값 배열을 되돌려줍니다. fread는 배정도 배열을 기본으로 되돌려줍니다.  특별한 꼴인 ‘*TYPE’은 ‘TYPE=>TYPE’의 줄임말입니다.

형변환과 반복 횟수 지정을 함께할 수도 있습니다. 예를 들어, 품목 ‘32*single=>single’을 적으면 fread가 단정도 떠돌이 소수점 값 구역을 읽고, 기본인 배정도 값 배열이 아닌 단정도 값 배열을 되돌려줍니다.

선택 인수 건너뛰기는 각 원소(또는 원소 구역)을 읽은 뒤 건너뛸 바이트 수를 지정합니다. 지정하지 않으면, 0으로 가정합니다. 마지막 구역 읽기를 온전하게 끝마치지 못하면, 마지막 건너뛰기는 하지 않습니다. 예를 들어, 아래 표현식은

fread (f, 10, "3*single=>single", 8)

마지막 읽기가 값 3개로 이루어진 온전한 구역이 되지 못하기 떄문에 마지막 8바이트 건너뛰기를 하지 않습니다.

선택 인수 얼개는 기록철의 자료 형식을 지정합니다. 가능한 값은 다음과 같습니다.

"native" 또는 "n"

현재 전산기에서 쓰는 형식입니다.

"ieee-be" 또는 "b"

전기·전자 기술자 협회 상위 바이트 우선입니다.

"ieee-le" 또는 "l"

전기·전자 기술자 협회 하위 바이트 우선입니다.

If no 얼개 is given the value used in the call to fopen which created the file descriptor is used. Otherwise, the value specified with fread overrides that of fopen and determines the data format.

출력 인수 에는 기록철에서 읽은 자료가 담깁니다.

선택인 되돌려준 값 개수에는 읽은 원소 개수가 담깁니다.

같이 보기: fwrite, fgets, fgetl, fscanf, fopen.

fwrite (기록철_식별자, 자료)
fwrite (기록철_식별자, 자료, 정밀도)
fwrite (기록철_식별자, 자료, 정밀도, 건너뛰기)
fwrite (기록철_식별자, 자료, 정밀도, 건너뛰기, 얼개)
= fwrite (…)

기록철 기술자 기록철_식별자가 명시한 기록철에 이진 형식으로 자료를 쓰고, 기록철 쓰기에 성공한 횟수를 개수에 되돌려줍니다.

인수 자료는 기록철에 쓸 행렬입니다. 값을 열쌓음순으로 뽑아냅니다.

나머지 인수 정밀도, 건너뛰기, 얼개는 선택 사항이며, fread에서 설명한 바와 같이 해석합니다.

자료가 지정한 정밀도를 넘어설 정도로 지나치게 클 때의 fwrite의 작동 방식은 정의되지 않았습니다.

같이 보기: fread, fputs, fprintf, fopen.


다음: 임시 기록철, 이전: 문자열 입력 변환, 상위 문서: C 형식 입출력 함수   [차례][찾아보기]