[問題] 字串輸出入問題

作者: terrylove12 (空洞)   2017-04-19 19:24:19
最近想用FORTRAN來寫AUTOCAD的腳本產生程式
用來展座標點
讀入的檔案是空白分隔的檔案
內容排序是 點號 N E Z
==讀入檔案內容
P1 1234567.123 123456.123 12.356
P10 1231231.123 123123.456 -1.444
P100 1254444.123 144155.333 100.567
==
然後我想輸出的檔案型式大概是
point_n,e,z (底線為空白字元)
text_n,e_5_0_點號
==輸出檔內容 (取第一筆資料來表示)
point 1234567.123,123456.123,12.356
text 1234567.123,123456.123 5 0 P1
==
不過目前遇到的問題就出現在字串宣告上
因為點號的長度是不固定的
如果不宣告字串長度 讀入的就只有字串的第一個字
如果宣告點號字串 LEN=10
的確可以讀入所有點號
但是在輸出的時候就會變成後面會補滿空白字元到10個字
例如
text 1234567.123,123456.123 5 0 P1________
text 1231231.123,123123.456 5 0 P10_______
一旦多出空白字元 AUTOCAD就無法吃下腳本指令
所以想請問大家這個問題要怎麼解決
另外想問用自由格式讀入REAL
是不是超過11碼就讀不到小數位呢
因為我用自由格式
real :: n,e,z
cha....(len=10) :: pt
READ(FILE,*) pt,n,e,z
然後write(*,*) n
小數位會變成.000
煩請大家提供想法了
感謝
編譯器cvf6.6
作者: blc (Anemos)   2017-04-19 19:54:00
trim() ?
作者: terrylove12 (空洞)   2017-04-19 20:17:00
感謝版主 謝謝 我真的是學藝不精
作者: blc (Anemos)   2017-04-19 20:32:00
以前我也不知道,還自己寫…然後n小數位變.000大概是浮點數精確度的關係,不過不確定。
作者: george1224 ( )   2017-04-20 07:48:00
real精度改成double看看呢?
作者: max533 (向陽花)   2017-04-24 13:35:00
應該如同樓上G大所說是單精度和雙精度的問題,基本上小數點後11位就是雙精度浮點數,試試看直接在宣告處宣告real*8就應該可讀到小數點

Links booklink

Contact Us: admin [ a t ] ucptt.com