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