`FGET` — stdin에서 스트림 모드로 한 문자 읽기
FGET — stdin에서 스트림 모드로 한 문자 읽기
표준 입력에서 한 글자씩 순서대로 읽어야 할 때가 있어요. 일반적인 형식화 입출력을 거치지 않고 스트림 방식으로 한 문자를 읽는 내장 FGET을 쓸 수 있어요.
출처: The GNU Fortran Compiler — FGET (Read a single character in stream mode from stdin)
본문
시그니처
CALL FGET(C [, STATUS])
또는 함수 형태로:
STATUS = FGET(C)
설명
표준 입력(stdin)에서 스트림 모드로 한 문자를 읽어요. 정상적인 형식화 출력을 우회해서 읽는 방식이에요.
스트림 I/O는 같은 단위에서 일반적인 레코드 지향(형식화/비형식화) I/O와 섞어 쓰면 안 돼요 — 결과가 예측 불가능해요.
이 내장은 서브루틴과 함수 두 형태로 제공되지만, 하나의 프로그램 단위에서는 한 형태만 쓸 수 있어요.
참고로 FGET 내장은 g77과의 하위 호환성을 위해 제공돼요. GNU Fortran은 Fortran 2003의 Stream 기능을 제공하므로, 새 코드에서는 미래의 이식성을 위해 새 스트림 I/O 기능을 쓰는 게 좋아요. (Fortran 2003 상태 항목 참고)
클래스
Subroutine, function (서브루틴 및 함수)
인자
C— 기본 kind의CHARACTER타입이어야 해요.STATUS— (선택)INTEGER타입의 상태 플래그. 성공 시 0, 파일 끝에서 -1, 그 외에는 시스템 특유의 양수 오류 코드를 돌려줘요.
예제
PROGRAM test_fget
INTEGER, PARAMETER :: strlen = 100
INTEGER :: status, i = 1
CHARACTER(len=strlen) :: str = ""
WRITE (*,*) 'Enter text:'
DO
CALL fget(str(i:i), status)
if (status /= 0 .OR. i > strlen) exit
i = i + 1
END DO
WRITE (*,*) TRIM(str)
END PROGRAM
표준
GNU 확장이에요.
더 알아보기
FGETC— 스트림 모드로 한 문자 읽기(단위 지정)FPUT— stdout에 스트림 모드로 한 문자 쓰기FPUTC— 스트림 모드로 한 문자 쓰기