作者terrylove12 (空洞)
看板Fortran
标题[问题] 字串输出入问题
时间Wed Apr 19 19:24:19 2017
最近想用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
--
Sent from my
fx-82SX
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.37.181.241
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Fortran/M.1492601063.A.932.html
※ 编辑: terrylove12 (114.37.181.241), 04/19/2017 19:26:23
1F:→ blc: trim() ? 04/19 19:54
2F:→ terrylove12: 感谢版主 谢谢 我真的是学艺不精 04/19 20:17
3F:→ blc: 以前我也不知道,还自己写… 04/19 20:32
4F:→ blc: 然後n小数位变.000大概是浮点数精确度的关系,不过不确定。 04/19 20:35
5F:→ george1224: real精度改成double看看呢? 04/20 07:48
6F:→ max533: 应该如同楼上G大所说是单精度和双精度的问题,基本上小数 04/24 13:35
7F:→ max533: 点後11位就是双精度浮点数,试试看直接在宣告处宣告real*8 04/24 13:35
8F:→ max533: 就应该可读到小数点 04/24 13:35