문자 입출력

문자 입출력

텍스트 스트림에 단일 문자 또는 문자 코드를 입출력하는 내장 술어들을 설명해요.

출처: GNU Prolog Manual - Character input/output

본문

이 내장 술어들은 텍스트 스트림에서/으로 단일 문자 또는 문자 코드를 입출력할 수 있게 해줘요. 원자 end_of_file이 파일 끝을 나타내는 문자로 반환돼요. -1이 파일 끝을 나타내는 문자 코드로 반환돼요.

get_char/2, get_char/1, get_code/1, get_code/2

Templates

get_char(+stream_or_alias, ?in_character)
get_char(?in_character)
get_code(+stream_or_alias, ?in_character_code)
get_code(?in_character_code)

Description get_char(SorA, Char)Char가 스트림 항 또는 별칭 SorA와 연관된 스트림에서 읽은 다음 문자와 통일되면 성공해요. get_code/2get_char/2와 비슷하지만 문자 코드를 다뤄요. get_char/1get_code/1은 현재 입력 스트림에 적용돼요.

Errors

  • SorA가 변수 - instantiation_error
  • Char가 변수도 in-character도 아님 - type_error(in_character, Char)
  • Code가 변수도 정수도 아님 - type_error(integer, Code)
  • SorA가 변수도 스트림 항 또는 별칭도 아님 - domain_error(stream_or_alias, SorA)
  • SorA가 열린 스트림과 연관되지 않음 - existence_error(stream, SorA)
  • SorA가 출력 스트림 - permission_error(input, stream, SorA)
  • SorA가 이진 스트림과 연관됨 - permission_error(input, binary_stream, SorA)
  • SorAend_of_stream(past)eof_action(error) 스트림 속성 가짐 - permission_error(input, past_end_of_stream, SorA)
  • 스트림에서 입력된 엔티티가 문자가 아님 - representation_error(character)
  • Code가 정수이지만 in-character 코드가 아님 - representation_error(in_character_code)

Portability: ISO 술어.

get_key/2, get_key/1, get_key_no_echo/2, get_key_no_echo/1

Templates

get_key(+stream_or_alias, ?integer)
get_key(?integer)
get_key_no_echo(+stream_or_alias, ?integer)
get_key_no_echo(?integer)

Description get_key(SorA, Code)Code가 스트림 항 또는 별칭 SorA와 연관된 스트림에서 읽은 다음 키의 문자 코드와 통일되면 성공해요. 키보드에서 단일 키를 읽으려는 용도예요(따라서 SorA는 현재 입력 스트림을 가리켜야 해요). 버퍼링은 수행되지 않고(문자가 가능해지면 바로 읽힘) 기능 키도 읽을 수 있어요(그 경우 Code는 정수 > 255). 읽은 문자가 출력 가능하면 에코(echo)돼요.

이 기능은 linedit 기능이 설치되었을 때만 가능해요(4.2.6절). 그렇지 않으면 get_key/2get_code/2(8.12.1절)와 비슷하게 동작하지만(첫 문자의 코드가 반환됨), 또한 < space(0x20) 문자(특히 RETURN)가 읽힐 때까지 남은 문자들을 펌핑해요. SorA가 현재 입력 스트림을 가리키지 않거나 이 스트림이 터미널에 연결되지 않았을 때도 같은 동작이 발생해요.

get_key_no_echo/2는 읽은 문자가 에코되지 않는다는 점만 제외하면 get_key/2와 비슷하게 동작해요. get_key/1get_key_no_echo/1은 현재 입력 스트림에 적용돼요.

Errors

  • SorA가 변수 - instantiation_error
  • Code가 변수도 정수도 아님 - type_error(integer, Code)
  • SorA가 변수도 스트림 항 또는 별칭도 아님 - domain_error(stream_or_alias, SorA)
  • SorA가 열린 스트림과 연관되지 않음 - existence_error(stream, SorA)
  • SorA가 출력 스트림 - permission_error(input, stream, SorA)
  • SorA가 이진 스트림과 연관됨 - permission_error(input, binary_stream, SorA)
  • SorAend_of_stream(past)eof_action(error) 스트림 속성 가짐 - permission_error(input, past_end_of_stream, SorA)

Portability: GNU Prolog 술어.

peek_char/2, peek_char/1, peek_code/1, peek_code/2

Templates

peek_char(+stream_or_alias, ?in_character)
peek_char(?in_character)
peek_code(+stream_or_alias, ?in_character_code)
peek_code(?in_character_code)

Description peek_char(SorA, Char)Char가 스트림 항 또는 별칭 SorA와 연관된 스트림에서 다음에 읽힐 문자와 통일되면 성공해요. 문자는 읽히지 않아요. peek_code/2peek_char/2와 비슷하지만 문자 코드를 다뤄요. peek_char/1peek_code/1은 현재 입력 스트림에 적용돼요.

Errors

  • SorA가 변수 - instantiation_error
  • Char가 변수도 in-character도 아님 - type_error(in_character, Char)
  • Code가 변수도 정수도 아님 - type_error(integer, Code)
  • SorA가 변수도 스트림 항 또는 별칭도 아님 - domain_error(stream_or_alias, SorA)
  • SorA가 열린 스트림과 연관되지 않음 - existence_error(stream, SorA)
  • SorA가 출력 스트림 - permission_error(input, stream, SorA)
  • SorA가 이진 스트림과 연관됨 - permission_error(input, binary_stream, SorA)
  • SorAend_of_stream(past)eof_action(error) 스트림 속성 가짐 - permission_error(input, past_end_of_stream, SorA)
  • 스트림에서 입력된 엔티티가 문자가 아님 - representation_error(character)
  • Code가 정수이지만 in-character 코드가 아님 - representation_error(in_character_code)

Portability: ISO 술어.

unget_char/2, unget_char/1, unget_code/2, unget_code/1

Templates

unget_char(+stream_or_alias, +character)
unget_char(+character)
unget_code(+stream_or_alias, +character_code)
unget_code(+character_code)

Description unget_char(SorA, Char)Char를 스트림 항 또는 별칭 SorA와 연관된 스트림에 다시 밀어 넣어요(push back). Charget_char/2가 읽을 다음 문자가 돼요. 누적해서 다시 밀어 넣을 수 있는 최대 문자 수는 max_unget Prolog 플래그(8.22.1절)로 주어져요. unget_code/2unget_char/2와 비슷하지만 문자 코드를 다뤄요. unget_char/1unget_code/1은 현재 입력 스트림에 적용돼요.

Errors

  • SorA가 변수 - instantiation_error
  • Char가 변수 - instantiation_error
  • Code가 변수 - instantiation_error
  • Char가 변수도 문자도 아님 - type_error(character, Char)
  • Code가 변수도 정수도 아님 - type_error(integer, Code)
  • SorA가 변수도 스트림 항 또는 별칭도 아님 - domain_error(stream_or_alias, SorA)
  • SorA가 열린 스트림과 연관되지 않음 - existence_error(stream, SorA)
  • SorA가 출력 스트림 - permission_error(input, stream, SorA)
  • SorA가 이진 스트림과 연관됨 - permission_error(input, binary_stream, SorA)
  • Code가 정수이지만 문자 코드가 아님 - representation_error(character_code)

Portability: GNU Prolog 술어.

put_char/2, put_char/1, put_code/1, put_code/2, nl/1, nl/0

Templates

put_char(+stream_or_alias, +character)
put_char(+character)
put_code(+stream_or_alias, +character_code)
put_code(+character_code)
nl(+stream_or_alias)
nl

Description

  • put_char(SorA, Char) - Char를 스트림 항 또는 별칭 SorA와 연관된 스트림에 씀.
  • put_code/2 - put_char/2와 비슷하지만 문자 코드를 다룸.
  • nl(SorA) - 스트림 항 또는 별칭 SorA와 연관된 스트림에 개행 문자를 씀. put_char(SorA, '\n')과 동일.

put_char/1, put_code/1, nl/0은 현재 출력 스트림에 적용돼요.

Errors

  • SorA가 변수 - instantiation_error
  • Char가 변수 - instantiation_error
  • Code가 변수 - instantiation_error
  • Char가 변수도 문자도 아님 - type_error(character, Char)
  • Code가 변수도 정수도 아님 - type_error(integer, Code)
  • SorA가 변수도 스트림 항 또는 별칭도 아님 - domain_error(stream_or_alias, SorA)
  • SorA가 열린 스트림과 연관되지 않음 - existence_error(stream, SorA)
  • SorA가 입력 스트림 - permission_error(output, stream, SorA)
  • SorA가 이진 스트림과 연관됨 - permission_error(output, binary_stream, SorA)
  • Code가 정수이지만 문자 코드가 아님 - representation_error(character_code)

Portability: ISO 술어.

더 알아보기