다음: 단순 출력, 상위 문서: C 형식 입출력 함수   [차례][찾아보기]


14.2.1 기록철 열고 닫기

기록철에서 자료를 읽거나 기록철에 쓰려면, 먼저 읽고 쓸 기록철을 열어야 합니다. fopen 함수가 읽거나 쓸 준비가 된, 열린 기록철을 가리키는 가리키개를 내놓습니다. 여린 기록철에서 자료를 모두 읽고 나면 또는 열린 기록철에 자료를 모두 쓰고 나면, 기록철을 닫아야 합니다. fclose 함수로 기록철을 닫습니다. 아래 부호가 기록철에 자료를 쓰는 방식을 보여주며, 기록철을 읽는 방법도 이와 비슷합니다.

filename = "myfile.txt";
fid = fopen (filename, "w");
# 여기에서 실제 입출력이 이루어짐…
fclose (fid);
기록철_식별자 = fopen (이름)
기록철_식별자 = fopen (이름, 방식)
기록철_식별자 = fopen (이름, 방식, 얼개)
[기록철_식별자, 안내] = fopen (…)
기록철_식별자_목록 = fopen ("all")
[기록철, 방식, 얼개] = fopen (기록철_식별자)

기록철을 저수준 입출력으로 열거나 열린 기록철과 기록철 기술자를 조회합니다.

fopen 함수의 첫 번째 꼴은 지정한 기록철을 특정 방식(읽기 쓰기, 읽기 전용 따위)과 얼개 해석 방식(전기·전자 기술자 협회 상위 바이트 우선, 전기·전자 기술자 협회 하위 바이트 우선 따위)으로 열고, 나중에 기록철을 참조하는데 쓰는 정숫값을 내놓습니다.

fopen 함수의 두 번째 꼴은 stdin, stdout, stderr을 제외하고 현재 열린 모든 기록철의 기록철 식별자 벡터를 내놓습니다.

fopen 함수의 세 번째 꼴은 주어진 기록철 식별자에 연결된 열린 기록철에 대한 정보를 내놓습니다.

예를 들어, 아래 표현식은

myfile = fopen ("splat.dat", "r", "ieee-le");

기록철 splat.dat를 읽기 전용으로 엽니다. 필요하면 이진 숫자값이 최하위 두값 우선인 전기·전자 기술자 협회 규격을 따른다고 가정하여 일반 표기법으로 바꿉니다.

이미 열린 기록철을 다시 열면, 단순하게 기록철을 다시 열고 기존과 다른 기록철 식별자를 내놓습니다. 기록철을 여러번 여는 것은 문제가 안 되지만, 서로 다른 기록철 식별자를 사용하여  같은 기록철에 내용을 작성하면 예상치 못한 결과가 나올 수 있습니다.

방식에 가능한 값은 다음과 같습니다.

r’ (기본)

기록철을 읽기 전용으로 엽니다.

w

기록철에 내용을 적으려고 엽니다. 기록철에 원래 있던 내용은 사라집니다.

a

기록철을 새로 만들어 내용을 적거나, 이미 존재하는 기록철이면 기록철 끝에 덧붙여 씁니다.

r+

기록철을 읽고 쓰려고 엽니다.

w+

기록철을 읽고 쓰려고 엽니다.  기록철에 원래 있던 내용은 사라집니다.

a+

기록철을 새로 만들어 내용을 읽고 쓰거나, 이미 존재하는 기록철이면 읽기로는 다 읽고, 쓰기로는 기록철 끝에 덧붙여 씁니다.

방식 문자열에 "t"를 덧붙이면 글월 방식으로 열고, "b"를 덧붙이면 이진 형식으로 엽니다. 윈도우 운영체제에서 글월 방식을 사용하면, 읽고 쓸 때 줄바꿈을 자동으로 운영체제에서 사용하는 적절한 줄 끝 문자(윈도우식 복귀 줄바꿈)로 바꿉니다. 이 방식을 따로 지정하지 않으면 이진 형식을 기본으로 사용합니다.

추가로 그누 집으로 압축한 기록철을 읽고 쓰려면 "z"을 방식 문자열에 덧붙여야 합니다. 또한 누 집으로 압축한 기록철을 이진 방식으로 열어야 합니다.

인수 얼개는 기록철에서 사용하는 기본 자료 형식을 지정하는 문자열입니다. 얼개에 가능한 값은 다음과 같습니다.

"native" 또는 "n" (기본)

사용하는 전산기의 형식입니다.

"ieee-be" or "b"

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

"ieee-le" or "l"

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

그러나 현재 지원하는 변환은 ‘native’, ‘ieee-be’, ‘ieee-le’ 형식 밖에 없습니다.

열고자 하는 기록철이 존재하지 않으면 권한이 0666 - umask인 새 기록철을 만듭니다.

호환 안내: 옥타브는 완충칸식 입출력으로 기록철을  엽니다. 작은 쓰기 작업은 내부 완충칸이 찰 때까지 모았다가 한 번에 단일 작업으로 모든 내용을 씁니다. 이 방식은 매우 효율적이고 성능을 향상시킵니다. 그러나 매트랩은 밀어내기식 입출력으로 기록철을 열어 모든 쓰기 작업이 그때그때 이루어집니다. 자료 쓰기 명령을 내리고 곧바로 쓰기 작업이 이루어져야 하면, 쓰기 명령을 내린 뒤에 바로 fflush를 불러 내부 완충칸을 밀어내야 합니다.

같이 보기: fclose, fgets, fgetl, fscanf, fread, fputs, fdisp, fprintf, fwrite, fskipl, fseek, frewind, ftell, feof, ferror, fclear, fflush, freport, umask.

fclose (기록철_식별자)
fclose ("all")
상태 = fclose ("all")

기록철 기술어 기록철_식별자가 가리키는 기록철을 닫습니다.

닫는데 성공하면 fclose가 0을 내놓고, 실패하면 -1을 내놓습니다. fclose의 두 번째 꼴은 stdin, stdout, stderr과 그누 플롯과 연관한 기록철 식별자를 뺀 모든 열린 기록철을 닫습니다.

같이 보기: fopen, fflush, freport.

is_valid_file_id (기록철_식별자)

기록철_식별자가 열린 기록철을 참조하면 참을 내놓습니다.

같이 보기: freport, fopen.


다음: 단순 출력, 상위 문서: C 형식 입출력 함수   [차례][찾아보기]