- Fortran 教程
- Fortran - 首頁
- Fortran - 概述
- Fortran - 環境設定
- Fortran - 基本語法
- Fortran - 資料型別
- Fortran - 變數
- Fortran - 常量
- Fortran - 運算子
- Fortran - 決策
- Fortran - 迴圈
- Fortran - 數字
- Fortran - 字元
- Fortran - 字串
- Fortran - 陣列
- Fortran - 動態陣列
- Fortran - 派生資料型別
- Fortran - 指標
- Fortran - 基本輸入輸出
- Fortran - 檔案輸入輸出
- Fortran - 過程
- Fortran - 模組
- Fortran - 本質函式
- Fortran - 數值精度
- Fortran - 程式庫
- Fortran - 程式設計風格
- Fortran - 除錯程式
- Fortran 資源
- Fortran - 快速指南
- Fortran - 有用資源
- Fortran - 討論
Fortran - 字元
Fortran 語言可以將字元視為單個字元或連續字串。
字元可以是取自基本字元集的任何符號,即字母、十進位制數字、下劃線和 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
一些字元函式
下表顯示了一些常用的字元函式及其描述 -
| 序號 | 函式及描述 |
|---|---|
| 1 | len(string) 它返回字元字串的長度 |
| 2 | index(string,sustring) 它查詢另一個字串中子字串的位置,如果未找到則返回 0。 |
| 3 | achar(int) 它將整數轉換為字元 |
| 4 | iachar(c) 它將字元轉換為整數 |
| 5 | trim(string) 它返回刪除了尾隨空格的字串。 |
| 6 | scan(string, chars) 它從左到右搜尋“string”(除非 back=.true.)以查詢“chars”中包含的任何字元的第一次出現。它返回一個整數,給出該字元的位置,如果未找到“chars”中的任何字元,則返回零。 |
| 7 | verify(string, chars) 它從左到右掃描“string”(除非 back=.true.)以查詢“chars”中不包含的任何字元的第一次出現。它返回一個整數,給出該字元的位置,如果僅找到“chars”中的字元,則返回零 |
| 8 | adjustl(string) 它左對齊“string”中包含的字元 |
| 9 | adjustr(string) 它右對齊“string”中包含的字元 |
| 10 | len_trim(string) 它返回一個整數,等於“string”的長度 (len(string)) 減去尾隨空格的數量 |
| 11 | repeat(string,ncopy) 它返回一個字串,其長度等於“string”長度的“ncopy”倍,並且包含“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
檢查字元的詞法順序
以下函式確定字元的詞法順序 -
| 序號 | 函式及描述 |
|---|---|
| 1 | lle(char, char) 比較第一個字元在詞法上是否小於或等於第二個字元 |
| 2 | lge(char, char) 比較第一個字元在詞法上是否大於或等於第二個字元 |
| 3 | lgt(char, char) 比較第一個字元在詞法上是否大於第二個字元 |
| 4 | llt(char, char) 比較第一個字元在詞法上是否小於第二個字元 |
示例 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