24小时热门版块排行榜    

查看: 3064  |  回复: 14

snoopyzhao

至尊木虫 (职业作家)

★ ★
jjdg(金币+2): 感谢参与 2011-07-22 01:38:55
给一个我写的 Fortran 90 版本的程序,没有加前面的准备字符串部分,呵呵,希望不难懂理解……
CODE:
program read_hex

implicit none
character(len=80) :: line="3 5  F6F  1d 0 0"
character(len=80) :: buff, hex_str, fm
integer, dimension(3) :: hex
integer :: str_len, i, first, last

buff = adjustl(line)
str_len = len_trim(buff)

!! remove the extra space in the string
do i=1,str_len-1
   if (buff(i:i) == ' ' .and. buff(i+1:i+1) == ' ') buff(i:) = buff(i+1:)
end do

!! extract the hexadecimal constant
first = 1
do i=1,3
   first = index(buff(first:), ' ') + first - 1
   last = index(buff(first+1:), ' ') + first
   hex_str = buff(first+1:last-1)
   write(fm, '(a,i0,a)') '(Z', len_trim(hex_str), ')'
   read(hex_str, fm) hex(i)
   first = last
end do

!! hexadecimal to decimal constrant, and output...
write(*,*) hex

end program read_hex

11楼2011-07-21 11:45:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

david830wu

新虫 (初入文坛)


dubo(金币+1): 欢迎常来程序语言版讨论 2011-07-31 13:22:17
对的,就是这个意思,现在看起来问的挺傻的
12楼2011-07-22 16:55:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

david830wu

新虫 (初入文坛)

引用回帖:
512396楼: Originally posted by snoopyzhao at 2011-07-21 09:58:42
看这个意思,是从6个16进制的数据中,读取其中的三个,然后返回3个对应的十进制数,是吧?

不知到说什么好,这么久才回复,一年都过去了,补上一句真是谢谢你啦!
13楼2012-11-05 16:57:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zengkehl

铜虫 (小有名气)

引用回帖:
5楼: Originally posted by david830wu at 2011-07-18 13:08:23
嗯,我这个问题已经解决了:
Buffer = "3  2a  5  f0  0  0"  ! 就是说2a, 5, f0为三角网格的三个节点的索引,就是所要的数据,程序如下:
        !------------------------------------------------------- ...

楼主,我现在也碰到你的这个问题了,能不能告诉我如何解决啊,我也是从fluent上读取了点的编号,及其坐标值,我把生成的txt文件整理了下,发现数据之间没有空格,然后我用fortran编程把这些数据读出来的时候报错了,楼主能说下当时你是怎么解决的么,我的相关数据文件和程序在下面

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : Source1.f90
  • 2013-04-27 20:49:46, 293 bytes
  • 附件 2 : 点坐标.txt
  • 2013-04-27 20:50:12, 31.7 K
14楼2013-04-27 20:50:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

教主杰

金虫 (小有名气)

引用回帖:
11楼: Originally posted by snoopyzhao at 2011-07-21 11:45:11
给一个我写的 Fortran 90 版本的程序,没有加前面的准备字符串部分,呵呵,希望不难懂理解……


program read_hex

implicit none
character(len=80) :: line="3 5  F6F  1d 0 0"
character(len=80) :: buf ...

这段程序有点小缺陷   就是
!! remove the extra space in the string
do i=1,str_len-1
   if (buff(i:i) == ' ' .and. buff(i+1:i+1) == ' ') buff(i = buff(i+1
end do
应该改成
do j=trim_line(i)-1,1,-1            
        if (transion_line(j:j)==' '.and.transion_line(j-1:j-1)==' ') then
           transion_line(j=transion_line(j+1
        end if
end do
不然中间多余2个数的空格就不能干净的去处多余空格
大家好很高兴见到各位
15楼2014-09-17 22:02:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 david830wu 的主题更新
信息提示
请填处理意见