Fortran 简明教程

Fortran - Characters

Fortran 语言可以将字符视为单个字符或连续字符串。

字符可以是取自基本字符集的任何符号,即取自字母、十进制数字、下划线和 21 个特殊字符。

字符常量是固定值字符字符串。

固有数据类型 @ {s5} 存储字符和字符串。字符串长度可以用 @ {s6} 说明符指定。如果未指定长度,则为 1。您可以按位置引用字符串中的各个字符;最左边的字符位于位置 1。

Character Declaration

声明字符类型数据与其他变量相同 −

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

Concatenation of Characters

连接运算符 // 连接字符。

The following example demonstrates this −

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

Some Character Functions

下表显示了一些常用的字符函数以及描述−

Sr.No

Function & Description

1

len(string) 它返回字符串的长度

2

index(string,sustring) 它在另一个字符串中查找子字符串的位置,如果未找到则返回 0。

3

achar(int) 它将整数转换为字符

4

iachar(c) 它将字符转换为整数

5

trim(string) 它返回删除尾部空格的字符串。

6

scan(string, chars) 它从左到右(除非 back=.true。)搜索“string”,查找“chars”中包含的任何字符的第一个出现。它返回一个表示该字符位置的整数,或者如果没有找到“chars”中的任何字符,则返回零。

7

verify(string, chars) 它从左到右(除非 back=.true。)扫描“string”,查找“chars”中不包含的任何字符的第一个出现。它返回一个表示该字符位置的整数,或者如果找不到“chars”中的任何字符,则返回零

8

adjustl(string) 它左对齐“string”中包含的字符

9

adjustr(string) 它右对齐“string”中包含的字符

10

len_trim(string) 它返回一个整数,该整数等于“string”的长度(len(string))减去尾部空格的数量。

11

repeat(string,ncopy) 它返回一个字符串,其长度等于“ncopy”乘以“string”的长度,并包含“ncopy”次连接的“string”副本。

Example 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.

Example 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

Example 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

Checking Lexical Order of Characters

以下函数确定字符的词法序列−

Sr.No

Function & Description

1

lle(char, char) 比较第一个字符是否按词法顺序小于或等于第二个字符

2

lge(char, char) 比较第一个字符是否按词法顺序大于或等于第二个字符

3

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