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