Fortran Coder

标题: fortran变量的内存大小限制 [打印本页]

作者: fuchuan    时间: 2014-3-9 14:28
标题: fortran变量的内存大小限制
问题是这样的,要读一行很长很长的文本文件,大概四千个字符长度后才遇到回车换行,:implicit none ; character(len=4200) sline;  read(11,*)sline  !从11号文件中读;结果出错,编译器是Fps4.0;如何解决呢?有劳,请诸位指点,谢谢

作者: 楚香饭    时间: 2014-3-9 14:31
怎么个出错法?文件中是什么内容?你读出来是什么内容?

如果文件中有空格,或者 / 你需要用格式符读出。例如

read(11,'(a4200)' ) sline
作者: fuchuan    时间: 2014-3-9 14:48
本帖最后由 fuchuan 于 2014-3-9 14:56 编辑
chuxf 发表于 2014-3-9 14:31
怎么个出错法?文件中是什么内容?你读出来是什么内容?

如果文件中有空格,或者 / 你需要用格式符读出。 ...

93:000;000;000;003;001;001;000;000;000;000;000;000;000;000;000;000;000;000;000;000;000;000;000;000;(如此等等……)按这样一个格式用文本编辑器可以观察到最后一个分号到4100列;我的思路是声明一个很长的字符串变量,然后用分号不断的拆分字符串变量获取数据,不好意思,错误提示有点忘了;但是我删掉一部分数据后变成一个短些的数据行,可以读,所以我怀疑这个变量长度超出编译器设置
作者: 楚香饭    时间: 2014-3-9 14:55
我这里试了下,是可以读出来的。

你读的时候有什么错误?有错误提示吗?还是说,结果不让你满意,你得到的结果是怎么样的?
作者: fuchuan    时间: 2014-3-9 15:10
chuxf 发表于 2014-3-9 14:55
我这里试了下,是可以读出来的。

你读的时候有什么错误?有错误提示吗?还是说,结果不让你满意,你得到的 ...


错误提示:Unhandled exception in split.exe:oxC0000005:Access voilation;    (split.exe是我的程序名)谢谢
作者: 楚香饭    时间: 2014-3-9 15:13
fuchuan 发表于 2014-3-9 15:10
错误提示:Unhandled exception in split.exe:oxC0000005:Access voilation;    (split.exe是我的程序名 ...

这不是我所希望看到的。

建议你截个图(黑色窗口的截图)
作者: fuchuan    时间: 2014-3-9 15:43
本帖最后由 fuchuan 于 2014-3-9 16:02 编辑
chuxf 发表于 2014-3-9 15:13
这不是我所希望看到的。

建议你截个图(黑色窗口的截图)

[imgD:\fortran\Projects\split\er1.png;]D:\fortran\Projects\split\error.png[/img]数据文件:93:到最后一个分号实际是一行,被记事本自动换行功能分隔成了多行现在问题描述够清楚了吧,呵呵

error.png (41.56 KB, 下载次数: 541)

error.png

er1.png (37.36 KB, 下载次数: 533)

er1.png

作者: fcode    时间: 2014-3-9 15:45
请使用上传附件功能上传图片
作者: fcode    时间: 2014-3-9 16:09
fuchuan 发表于 2014-3-9 15:43
]D:\fortran\Projects\split\error.png[/img]数据文件:93:到最后一个分号实际是一行,被记事本自动换行功 ...

你能看到黑色的console窗口吗?对那个窗口截图
作者: fuchuan    时间: 2014-3-9 16:11
fcode 发表于 2014-3-9 16:09
你能看到黑色的console窗口吗?对那个窗口截图

控制台窗口什么反应没有,黑色无内容驻留。不反应我就关闭了
作者: fcode    时间: 2014-3-9 16:32
已确定此问题是长数据引起,需使用格式化输入,不能使用 * 读入。参考沙发代码。

在VF系列编译器上,限定:
Constants: characters read in list-directed I/O 2048 characters




超过2048个字符,就不能使用  * 读入了。

另外,建议放弃 PowerStation 编译器。

在我的IVF编译器上,会给出错误
forrtl: severe (59): list-directed I/O syntax error, unit 12, file F:\xx.txt







欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2