F_C_STRING — Fortran 문자를 C 문자열로 변환

F_C_STRING — Fortran 문자를 C 문자열로 변환

C 함수와 코드를 주고받을 때, Fortran 문자열은 그냥은 넘길 수 없어요. C의 문자열은 끝에 널 문자(\0)가 붙어야 하거든요. F_C_STRING은 Fortran 문자 스칼라를 C 함수에 넘길 수 있는 널 종료 문자열로 바꿔 주는 변환 함수입니다.

출처: gfortran 공식 문서 - F_C_STRING

시그니처

RESULT = F_C_STRING(STRING[, ASIS])

본문

설명(Description)

F_C_STRING 내장 함수는 ASIS 인자가 있고 참(true)이면 STRING//C_NULL_CHAR와 같고, 그 외에는 TRIM(STRING)//C_NULL_CHAR와 같아요. 즉 ASIS를 주면 뒤쪽 공백을 그대로 둔 채 널 문자만 붙이고, 주지 않거나 거짓이면 뒤쪽 공백을 떼어낸 뒤 널 문자를 붙이는 거죠.

분류(Class)

변환 함수(Transformational function)

인자(Arguments)

  • STRING — kind C_CHAR의 문자 스칼라예요.
  • ASIS — (선택) 논리 스칼라예요.

반환값(Return value)

결과는 STRING과 같은 타입·kind의 널 종료 문자 스칼라로, char * 인자를 받는 C 함수에 넘기기에 적합해요.

예제

program main
  use iso_c_binding, only: f_c_string, c_char
  implicit none (external, type)
  character(:, c_char), allocatable :: s1, s2, s3

  ! s1 is null-terminated "hello, world!   "
  s1 = f_c_string ("hello, world!   ", .true.)

  ! s2 is null-terminated "hello, world!"
  s2 = f_c_string ("hello, world!   ", .false.)

  ! s3 is null-terminated "hello, world!" (same as s2 example)
  s3 = f_c_string ("hello, world!   ")
end program main

같은 문자열 "hello, world! "에 대해 ASIS를 참으로 주면 뒤쪽 공백이 그대로 남고(s1), 거짓으로 주거나 생략하면(s2, s3) TRIM이 적용되어 "hello, world!"만 남는 걸 보여주는 예시예요. 세 경우 모두 끝에 널 문자가 붙어 C 문자열이 됩니다.

표준(Standard)

Fortran 2023 이상

더 알아보기

C_F_STRPOINTER — C 문자열을 Fortran 문자열 포인터로 변환