24小时热门版块排行榜    

CyRhmU.jpeg
南方科技大学公共卫生及应急管理学院2026级博士研究生招生报考通知(长期有效)
查看: 768  |  回复: 5
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

wangyujia

木虫 (正式写手)

[交流] 【求助】用IDL读取文件

我的目的是想把一个文本文档读取进一个字符串数组,用的是下列语句:
openr, lun, filename, /get_lun
data = strarr(100)
readf, lun, data, format='(a)'
free_lun, lun

这里的一个很尴尬的地方是我必须先定义这个字符串数组的长度,要是该数组的长度小于文档的行数,那么没事。要是大于文档的行数的话那么就会报出这样的错误:
READF: End of file encountered. Unit: 100

所以我在做这项工作的时候要先看看我要读取的文档有多少行,很麻烦。请问可以不用先定义字符串数组的长度,直接把一个文本文档读取进一个数组吗?
谢谢!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangyujia

木虫 (正式写手)

引用回帖:
Originally posted by magic7004 at 2009-8-27 19:19:
不知道IDL是什么,不过一般一次性读取文件都是先确定文件大小的。
如果不能确定大小,就要用循环,逐行读取,一直读到EOF

IDL是Interactive Data Language,号称是第4代计算机语言呢!(C,fortran是第三代)不过好象用的人不多啊!我之前搜了一下,看到这里有人讨论IDL,所以才发贴问的。

在C或fortran里有确定文件大小的命令吗?
3楼2009-08-27 19:46:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

magic7004

金虫 (职业作家)

★ ★
wangyujia(金币+2,VIP+0):嗯!用循环是一个思路,我试试看。 8-27 20:09
不知道IDL是什么,不过一般一次性读取文件都是先确定文件大小的。
如果不能确定大小,就要用循环,逐行读取,一直读到EOF
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
2楼2009-08-27 19:19:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)

★ ★
0112358(金币+2,VIP+0):鼓励交流 8-27 21:57
引用回帖:
Originally posted by wangyujia at 2009-8-27 19:46:



IDL是Interactive Data Language,号称是第4代计算机语言呢!(C,fortran是第三代)不过好象用的人不多啊!我之前搜了一下,看到这里有人讨论IDL,所以才发贴问的。

在C或fortran里有确定文件大小的命令 ...

不清楚啊,好久不用C了,不过印象里都是
while(!EOF)
    ReadFile...
这样的。
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
4楼2009-08-27 21:11:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)

★ ★ ★ ★
0112358(金币+2,VIP+0):欢迎常来程序版回帖交流 8-27 21:58
wangyujia(金币+2,VIP+0): 8-28 11:11
PS: Windows下有个API GetFileSize,最近都用这个。
另外可以MapViewOfFile,然后搞个指针直接访问文件的数据就行了。
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
5楼2009-08-27 21:18:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见