Fortran Coder

查看: 305|回复: 7

[文件读写] 一次性读入整个文本到字符串, 包含换行符

[复制链接]

43

帖子

12

主题

0

精华

熟手

F 币
186 元
贡献
87 点
发表于 2024-10-3 22:25:27 | 显示全部楼层 |阅读模式
VB有个命令 readall() 可以读入整个文本到一个字符串
fortran read 好像只能逐行读入, 就算预先设定一个很长的字符串, 读入也是文本的一行, 后面空格
不想用循环逐行读取, 还要截断拼接
不明白换行符也是字符串, 为啥不能一次读入

835

帖子

2

主题

0

精华

大宗师

F 币
3926 元
贡献
2334 点
发表于 2024-10-4 07:18:19 | 显示全部楼层
可以。先查询文件大小,然后用二进制方式打开和读取。

43

帖子

12

主题

0

精华

熟手

F 币
186 元
贡献
87 点
 楼主| 发表于 2024-10-7 11:56:59 | 显示全部楼层
li913 发表于 2024-10-4 07:18
可以。先查询文件大小,然后用二进制方式打开和读取。

差点忘记了流文件这茬

但有个问题, 如果全部读出来之后在一个字符串里, 再从中间读出某个数据就麻烦了
以前每行读的时候
aaa 3
bbb 4
字符串读了, 就接着读数据很容易

aaa 3换行符bbb 4换行符
这样就不好读数了, 好像不能把换行符认为像空格或逗号一类的分隔 自动读出数字

2015

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1573 元
贡献
676 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2024-10-7 14:55:00 | 显示全部楼层
所以你明白为什么有“有格式”文件读写方式了。

你非要用流文件去读取全部文件内容,那自然“拆分数据”的工作就要由你自己来做。

语法给你提供了“有格式”方式读写文件,你偏不用。

43

帖子

12

主题

0

精华

熟手

F 币
186 元
贡献
87 点
 楼主| 发表于 2024-10-7 20:06:11 | 显示全部楼层
fcode 发表于 2024-10-7 14:55
所以你明白为什么有“有格式”文件读写方式了。

你非要用流文件去读取全部文件内容,那自然“拆分数据”的 ...

我的意思是在先期读入整个字符串的基础上, 再用有格式读取字符串中的内容, 本质和 read(str, *)....  应该是一样的吧,  str 只不过换成了整个文本字符串(包含换行符)

2015

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1573 元
贡献
676 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2024-10-7 20:27:55 | 显示全部楼层
cqflhl 发表于 2024-10-7 20:06
我的意思是在先期读入整个字符串的基础上, 再用有格式读取字符串中的内容, 本质和 read(str, *)....  应 ...

是的,可以这样,没有问题。
read( str ,  * )
这种用法叫内部文件。

如果你还有其他疑问,请详细描述你的需求。

43

帖子

12

主题

0

精华

熟手

F 币
186 元
贡献
87 点
 楼主| 发表于 2024-10-8 22:10:52 | 显示全部楼层
fcode 发表于 2024-10-7 20:27
是的,可以这样,没有问题。
read( str ,  * )
这种用法叫内部文件。

其实没那么复杂, 本质就是换行符不是Fortran支持的数据分隔符, 比如逗号,空格,制表符

101

帖子

0

主题

0

精华

大师

F 币
670 元
贡献
299 点

规矩勋章元老勋章新人勋章

发表于 2024-10-9 13:28:51 | 显示全部楼层
循环把换行符替换成空格就行了
天之道,损有余而补不足
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-11-7 09:29

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表