討論區快速選單
知識庫快速選單
掌握Salesforce雲端管理秘訣 程式設計俱樂部Facebook粉絲團 傑米的攝影旅遊筆記
[ 回上頁 ] [ 討論區發言規則 ]
整數如何轉成字串
更改我的閱讀文章字型大小
作者 : horishana(horishana)
[ 貼文 11 | 人氣 5827 | 評價 0 | 評價/貼文 0 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/5/5 下午 12:31:07
如題,請問如何將整數轉成字串呢?
作者 : ice_emissary(燃燒的大地) 貼文超過200則
[ 貼文 408 | 人氣 0 | 評價 1890 | 評價/貼文 4.63 | 送出評價 18 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人horishana註記此篇回應為很有道理 2008/5/6 下午 11:49:09
看你要怎麼轉吧?以下提供兩種轉換法:

(1) achar(i)
    i:integer
    return:character
    它會傳回ASCII表上的第i個字元,所以你可能需要ASCII字表
    Ex:
     c=achar(75)
     結果c='K'

(2) 將整數write進字串
    操作法:將write(unit,format)中的unit項改成某字串,記得字串長度要夠
    Ex:
     i=1937
     write(c,*) i
     結果c='1937'
作者 : horishana(horishana)
[ 貼文 11 | 人氣 5827 | 評價 0 | 評價/貼文 0 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/5/8 上午 09:44:05
燃燒的大地大大
我試過你說的第二種方法,可是程式出現錯誤,這樣的表示方式是fortran允許的嗎?
至於第一種方法,若是一個大整數(例如.256358)的話怎麼辦?
作者 : ice_emissary(燃燒的大地) 貼文超過200則
[ 貼文 408 | 人氣 0 | 評價 1890 | 評價/貼文 4.63 | 送出評價 18 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人horishana註記此篇回應為很有道理 2008/5/11 下午 05:34:43
其實這個問題我真不曉得,可以確定的是Fortran90接受這樣的語法。
若你是在編譯時出現錯誤,那應該是Fortran77不支援這樣的語法;
若是在執行時出現錯誤,那應該是字串長度不夠。

舉例說明:
  i=1937
  write(c,'(i5)') i
  則字串c的長度至少要5以上,亦及宣告character(5)::c
  但若使用自動格式,write(c,*) i
  ,則字串c可能就要很長了。

事實上這用法可以用在任何變數的輸出及輸入
Ex:
  integer::i=1945
  real::pi=3.1415927, a,b
  character(20)::c

  write(c,'(i4,2x,f8.4)') i,pi
  !結果:c=' 1945 3.1416 '

  read(c,*) a,b
  !結果:a=1945.0, b=3.14160

  c='Earth'
  read(c,*) a
  !結果:ERROR


至於achar函式,ASCII字碼表好像只有定義0∼255有對應字元。
不過若輸入超出範圍的index值,它還是會傳回某個字元就是。
作者 : f77f95(f77f95) Fortran頂尖高手貼文超過500則
[ 貼文 548 | 人氣 9 | 評價 3370 | 評價/貼文 6.15 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/5/12 上午 01:05:04
這種Internal File 的輸出與輸入在 Fortran 77 就已經可以使用了。

你們碰到的問題是在於format. Internal file 在輸出時不能使用
Write(C,*) 這樣的格式而必須使用Format的功能, 例如﹕
Write(C,'(I7)')

有興趣的人可以試一下下面這個小例子﹕
program t2
implicit none
character(len=10) :: Form
integer :: A
Write(Form,'(I5)')12345
Write(*,*) Form
Write(Form,'(I6)')12345
Write(*,*) Form
Write(Form,'(I7)')12345
Write(*,*) Form
Write(Form,'(I5)') 123456789011
Write(*,*) Form
Write(Form,*) 12345
Write(*,*) Form

End
 板主 : 徵求中
 > Fortran - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Fortran - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Fortran
1 f77f95 3300 
2 dennis 470 
3 cc 350 
4 smallpotato 320 
5 qq 290 
6 冼鏡光 230 
7 eraser 220 
8 小文 210 
9 iner 200 
10 wuda 160 
Fortran
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.046875