看板Programming
标 题Re: [问题] fortran中开启input如何跳过几行字呀??
发信站KKCITY (Tue Sep 2 23:27:09 2008)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ntu!news.au!zoonews.ee.ntu!news
※ 引述《[email protected] (阿暴)》之铭言:
> 请问各位高手
> 我该如何跳过英文字
> 然後去得我要的10行数据呢??
给fortran 的输入档案最好不要这样。以前碰到这样我会说用别的程式跑
过一遍取代那些英文字,因为fortran 的输出入规格是在写程式的时候就
要固定,写好一列之内有四个栏位就是四个,不到四个他就出run-time
error 给你看,少於四个行内剩下的又会跳过!每一行有长有短是C的习
惯,硬要用Fortran 模仿C那真是
马鹿。
不过这种马鹿的问题实在是一直在发生,幸好我还有一点实验精神,所以
我就写了以下的程式,搭配你的测试资料就可以正常读取出来。
原理是先用一个buffer读取整行,然後判断buffer的内容是不是那几个起
讫字串,如果不是再从buffer里面把各个栏位读出来。
着色版本见此
http://fortran.nopaste.syscp.org/287 。(推荐此站,
不像那些几天就删掉的pastebin网站,这个网站居然还有永久保存的选项)
谨慎使用。
program doubleBufferInput
character*66 buffer
character*10 header
integer fig1, fig2, fig3
10 read (*, '(A66)', end=100) buffer
if (buffer == "Initial" .OR.
1 buffer == "end" .OR.
2 buffer == "Final") then
write (*, *) "*** "//buffer
else
read (buffer, *) header, fig1, fig2, fig3
write (*, "(A10, 3I5)") header, fig1, fig2, fig3
end if
! Uncomment the following line to inspect the buffer
! write (*, "('[', A66, ']')") buffer
goto 10
100 continue
stop
end
--
蒙帝派松正体中文计画 (4/23)
- 如何隐身 - SPAM - 英国杀人笑话
http://www.wretch.cc/blog/journeyman&article_id=14377810
▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂
■法外科学暨工程顾问公司■ http://www.wretch.cc/blog/journeyman/
▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆
--
┌─────◆KKCITY◆─────┐ ★ 人人可架站,经营社群联谊天地 ★
│ bbs.kkcity.com.tw │ 欢迎社团/班系/歌友/艺文创作/公益申请
└──《From:59.115.200.121
》──┘ 到 KKCity 开设自己喜爱的主题BBS站
--