`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 — 스트림 모드로 한 문자 쓰기