我有最多80個字符的字符串變量。 我聲明變量爲CHARACTER STRING*80
或CHARACTER*80 STRING
如果用戶輸入的字符少於80個字符,則會在剩餘位置附加一些特殊字符。如何處理這種陳述?
您能否讓我知道如何處理?
CLARIFICATION: 我想知道如何用其他字符填充字符串中的剩餘空間。
我有最多80個字符的字符串變量。 我聲明變量爲CHARACTER STRING*80
或CHARACTER*80 STRING
如果用戶輸入的字符少於80個字符,則會在剩餘位置附加一些特殊字符。如何處理這種陳述?
您能否讓我知道如何處理?
CLARIFICATION: 我想知道如何用其他字符填充字符串中的剩餘空間。
預定義一個空字符串,用空格填充它。然後使用修剪只得到沒有尾隨空格的字符串。您還應該在聲明中使用字符(len = 80)。
編輯,更新:你可以用一些其他字符的東西替換字符串中的尾隨空間,如
do i=len_trim(string)+1,len(string)
string(i:i) = 'A'
end do
小錯誤,準確的申報是字符(LEN = 80)。 len =可以省略。 –
對不起,謝謝你的更正。 – haraldkl
您可以定義的80個字符您所選擇的(比如,空格)的字符串,然後得到通過字符輸入字符,因此使所有的元素不變:
[' ', ' ', ' ' ... ' ']
['h', ' ', ' ' ... ' ']
['h', 'e', ' ' ... ' ']
['h', 'e', 'l' ... ' ']
我不明白,「如果用戶輸入少於80個字符,然後一些特殊字符在剩下的位置得到追加。」 - Fortran的方法是在IO或賦值上添加空格以填充字符串。你可以通過下面的測試程序看到。它還包括haraldkl顯示的將尾隨空白更改爲其他字符的方法。一個問題是很難區分「真正的」尾隨空白和填充的空白。
module subs
contains
subroutine write_string (string)
character (len=10), intent (in) :: string
integer :: i
write (*, '(">", A10, "<")') string
do i=1, 10
write (*, *) i, ichar (string (i:i))
end do
return
end subroutine write_string
end module subs
program test_string
use subs
character (len=10) :: string
integer :: i
! Assignment test
string = "abc"
call write_string (string)
! Read test
string = "123456789"
write (*, '("Input string:")')
read (*, '(A)') string
call write_string (string)
! replacing the trailing blanks:
do i=len_trim (string)+1, 10
string(i:i) = "+"
end do
call write_string (string)
stop
end program test_string
請使用代碼標籤 – tekknolagi
並請澄清,你想,以填補剩餘的空間字符串中,'80的strlen(字符串)'一些字符 – tekknolagi