Fortran-문자
Fortran 언어는 문자를 단일 문자 또는 연속 문자열로 처리 할 수 있습니다.
문자는 기본 문자 집합, 즉 문자, 10 진수, 밑줄 및 21 개의 특수 문자에서 가져온 기호 일 수 있습니다.
문자 상수는 고정 된 값의 문자열입니다.
내장 데이터 유형 character문자와 문자열을 저장합니다. 문자열의 길이는 다음과 같이 지정할 수 있습니다.len지정자. 길이를 지정하지 않으면 1입니다. 위치로 참조하는 문자열 내에서 개별 문자를 참조 할 수 있습니다. 가장 왼쪽의 문자는 위치 1에 있습니다.
캐릭터 선언
문자 유형 데이터를 선언하는 것은 다른 변수와 동일합니다-
type-specifier :: variable_name
예를 들면
character :: reply, sex
다음과 같은 값을 할당 할 수 있습니다.
reply = ‘N’
sex = ‘F’
다음 예제는 문자 데이터 유형의 선언 및 사용을 보여줍니다.
program hello
implicit none
character(len = 15) :: surname, firstname
character(len = 6) :: title
character(len = 25)::greetings
title = 'Mr. '
firstname = 'Rowan '
surname = 'Atkinson'
greetings = 'A big hello from Mr. Bean'
print *, 'Here is ', title, firstname, surname
print *, greetings
end program hello
위의 프로그램을 컴파일하고 실행하면 다음 결과가 생성됩니다.
Here is Mr. Rowan Atkinson
A big hello from Mr. Bean
문자 연결
연결 연산자 //는 문자를 연결합니다.
다음 예제는 이것을 보여줍니다-
program hello
implicit none
character(len = 15) :: surname, firstname
character(len = 6) :: title
character(len = 40):: name
character(len = 25)::greetings
title = 'Mr. '
firstname = 'Rowan '
surname = 'Atkinson'
name = title//firstname//surname
greetings = 'A big hello from Mr. Bean'
print *, 'Here is ', name
print *, greetings
end program hello
위의 프로그램을 컴파일하고 실행하면 다음 결과가 생성됩니다.
Here is Mr.Rowan Atkinson
A big hello from Mr.Bean
일부 캐릭터 기능
다음 표는 설명과 함께 일반적으로 사용되는 문자 함수를 보여줍니다.
Sr. 아니요 | 기능 및 설명 |
---|---|
1 | len(string) 문자열의 길이를 반환합니다. |
2 | index(string,sustring) 다른 문자열에서 부분 문자열의 위치를 찾고, 찾지 못하면 0을 반환합니다. |
삼 | achar(int) 정수를 문자로 변환합니다. |
4 | iachar(c) 문자를 정수로 변환합니다. |
5 | trim(string) 후행 공백이 제거 된 문자열을 리턴합니다. |
6 | scan(string, chars) "문자열"을 왼쪽에서 오른쪽으로 (back = .true가 아닌 경우) 검색하여 "문자"에 포함 된 문자의 첫 번째 발생을 찾습니다. 해당 문자의 위치를 제공하는 정수를 반환하거나 "chars"에있는 문자가 없으면 0을 반환합니다. |
7 | verify(string, chars) "문자열"에서 "문자"에 포함되지 않은 문자의 첫 번째 발생에 대해 왼쪽에서 오른쪽으로 (back = .true가 아닌 경우) 검색합니다. 해당 문자의 위치를 제공하는 정수를 반환하거나 "chars"의 문자 만 발견 된 경우 0을 반환합니다. |
8 | adjustl(string) "문자열"에 포함 된 문자를 왼쪽 정렬합니다. |
9 | adjustr(string) "문자열"에 포함 된 문자를 올바르게 정렬합니다. |
10 | len_trim(string) "문자열"(len (문자열))의 길이에서 후미 공백 수를 뺀 값과 동일한 정수를 반환합니다. |
11 | repeat(string,ncopy) 길이가 "ncopy"에 "string"의 길이를 곱한 문자열을 반환하고 "string"의 "ncopy"연결 복사본을 포함합니다. |
예 1
이 예는 index 기능-
program testingChars
implicit none
character (80) :: text
integer :: i
text = 'The intrinsic data type character stores characters and strings.'
i=index(text,'character')
if (i /= 0) then
print *, ' The word character found at position ',i
print *, ' in text: ', text
end if
end program testingChars
위의 프로그램을 컴파일하고 실행하면 다음 결과가 생성됩니다.
The word character found at position 25
in text : The intrinsic data type character stores characters and strings.
예 2
이 예제는 trim 기능-
program hello
implicit none
character(len = 15) :: surname, firstname
character(len = 6) :: title
character(len = 25)::greetings
title = 'Mr.'
firstname = 'Rowan'
surname = 'Atkinson'
print *, 'Here is', title, firstname, surname
print *, 'Here is', trim(title),' ',trim(firstname),' ', trim(surname)
end program hello
위의 프로그램을 컴파일하고 실행하면 다음 결과가 생성됩니다.
Here isMr. Rowan Atkinson
Here isMr. Rowan Atkinson
예제 3
이 예제는 achar 기능-
program testingChars
implicit none
character:: ch
integer:: i
do i = 65, 90
ch = achar(i)
print*, i, ' ', ch
end do
end program testingChars
위의 프로그램을 컴파일하고 실행하면 다음 결과가 생성됩니다.
65 A
66 B
67 C
68 D
69 E
70 F
71 G
72 H
73 I
74 J
75 K
76 L
77 M
78 N
79 O
80 P
81 Q
82 R
83 S
84 T
85 U
86 V
87 W
88 X
89 Y
90 Z
문자의 어휘 순서 확인
다음 함수는 문자의 어휘 순서를 결정합니다-
Sr. 아니요 | 기능 및 설명 |
---|---|
1 | lle(char, char) 첫 번째 문자가 어휘 적으로 두 번째 문자보다 작거나 같은지 여부를 비교합니다. |
2 | lge(char, char) 첫 번째 문자가 어휘 적으로 두 번째 문자보다 크거나 같은지 여부를 비교합니다. |
삼 | lgt(char, char) 첫 번째 문자가 어휘 적으로 두 번째 문자보다 큰지 여부를 비교합니다. |
4 | llt(char, char) 첫 번째 문자가 어휘 적으로 두 번째 문자보다 작은 지 여부를 비교합니다. |
Example 4
다음 기능은 사용을 보여줍니다-
program testingChars
implicit none
character:: a, b, c
a = 'A'
b = 'a'
c = 'B'
if(lgt(a,b)) then
print *, 'A is lexically greater than a'
else
print *, 'a is lexically greater than A'
end if
if(lgt(a,c)) then
print *, 'A is lexically greater than B'
else
print *, 'B is lexically greater than A'
end if
if(llt(a,b)) then
print *, 'A is lexically less than a'
end if
if(llt(a,c)) then
print *, 'A is lexically less than B'
end if
end program testingChars
위의 프로그램을 컴파일하고 실행하면 다음 결과가 생성됩니다.
a is lexically greater than A
B is lexically greater than A
A is lexically less than a
A is lexically less than B