F_C_STRING — Fortran 문자를 C 문자열로 변환
F_C_STRING — Fortran 문자를 C 문자열로 변환
C 함수와 코드를 주고받을 때, Fortran 문자열은 그냥은 넘길 수 없어요. C의 문자열은 끝에 널 문자(\0)가 붙어야 하거든요. F_C_STRING은 Fortran 문자 스칼라를 C 함수에 넘길 수 있는 널 종료 문자열로 바꿔 주는 변환 함수입니다.
시그니처
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— kindC_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 문자열 포인터로 변환