回 帖 发 新 帖 刷新版面

主题:Fortran读写格式

大家好,我有一列数据,下网格式化输出,
51804,新疆,-2146.817493,-481.312853,3090.1,1554.044738,塔什库尔干
我只希望最后一列格式化,前面的按照默认格式,该怎么写这个语句呢?
谢谢大家

回复列表 (共12个回复)

沙发

不明白...
你的数据是一列一列输出的?

板凳

我是想把数据读到数组里面,只是最后一项格式化读取。是因为最后一项里面可能有空格,比如 寿  县。Fortran遇到空格就自动停止了

3 楼

我不知道你用什么格式读取, 文字应该是字符串读取的, 字符串读取不会因为遇到空格而停下来的. 你看看是不是算错字符长度.

4 楼

给你提供一个思路:把每一行数据读入到一个字符串中(字符串的长度要尽量长些,以保证每一行数据能读进去)之后,在字符串中以字符串长度做一个循环,从第一个字符串元素开始,作判断,如果元素是","就将","之前的字符串元素读入到一个新的字符串中(最好是读入到字符串数组中)。
有了这些就字符串数组,你可以再进一步操作了。如:"寿  县"为读入到的某个字符串数组中的元素,可以将其修改为"寿县",如果字符串是"1554.044738",可以用内部文件的方法将其转变成数字1554.044738。 特别注意:汉字是两个字节长,即 s="中国" 时,s(1:2)="中",s(3:4)="国"。

5 楼

[quote]我不知道你用什么格式读取, 文字应该是字符串读取的, 字符串读取不会因为遇到空格而停下来的. 你看看是不是算错字符长度.[/quote]
会的,肯定是会的。我的字符定义是大于字符串长度的,因为最后一列的长度也是不相同的。

6 楼

[quote]给你提供一个思路:把每一行数据读入到一个字符串中(字符串的长度要尽量长些,以保证每一行数据能读进去)之后,在字符串中以字符串长度做一个循环,从第一个字符串元素开始,作判断,如果元素是","就将","之前的字符串元素读入到一个新的字符串中(最好是读入到字符串数组中)。
有了这些就字符串数组,你可以再进一步操作了。如:"寿  县"为读入到的某个字符串数组中的元素,可以将其修改为"寿县",如果字符串是"1554.044738",可以用内部文件的方法将其转变成数字1554.044738。 特别注意:汉字是两个字节长,即 s="中国" 时,s(1:2)="中",s(3:4)="国"。
[/quote]
这个思路也是我刚开始想的,但是因为数据只是用逗号分隔,长度并不是固定的,就很麻烦,而且很托速度。

7 楼

[quote][quote]我不知道你用什么格式读取, 文字应该是字符串读取的, 字符串读取不会因为遇到空格而停下来的. 你看看是不是算错字符长度.[/quote]
会的,肯定是会的。我的字符定义是大于字符串长度的,因为最后一列的长度也是不相同的。[/quote]
所以我不知道你说的自动停止是出错还是什么.
如果你现在还用默认格式读取数据的话, 开始翻翻书看如何格式化读取吧. 如果默认读取能解决所有问题的话fortran增加格式化读取干什么呢?

8 楼

[quote][quote]给你提供一个思路:把每一行数据读入到一个字符串中(字符串的长度要尽量长些,以保证每一行数据能读进去)之后,在字符串中以字符串长度做一个循环,从第一个字符串元素开始,作判断,如果元素是","就将","之前的字符串元素读入到一个新的字符串中(最好是读入到字符串数组中)。
有了这些就字符串数组,你可以再进一步操作了。如:"寿  县"为读入到的某个字符串数组中的元素,可以将其修改为"寿县",如果字符串是"1554.044738",可以用内部文件的方法将其转变成数字1554.044738。 特别注意:汉字是两个字节长,即 s="中国" 时,s(1:2)="中",s(3:4)="国"。
[/quote]
这个思路也是我刚开始想的,但是因为数据只是用逗号分隔,长度并不是固定的,就很麻烦,而且很托速度。[/quote]
如果没什么规律, 这个或者是挺适合的方法了.

9 楼

[quote][quote][quote]我不知道你用什么格式读取, 文字应该是字符串读取的, 字符串读取不会因为遇到空格而停下来的. 你看看是不是算错字符长度.[/quote]
会的,肯定是会的。我的字符定义是大于字符串长度的,因为最后一列的长度也是不相同的。[/quote]
所以我不知道你说的自动停止是出错还是什么.
如果你现在还用默认格式读取数据的话, 开始翻翻书看如何格式化读取吧. 如果默认读取能解决所有问题的话fortran增加格式化读取干什么呢?[/quote]
格式读取的话,字符串会将空格作为字符串的一部分,直到达到字符串的长度.所以中间有空格的字符串必须格式化读取.我的意思是一行数据,怎样实现默认和格式化读取的同时实现.如果全部格式化的话,书上有很多例子的.

10 楼

[quote][quote][quote]给你提供一个思路:把每一行数据读入到一个字符串中(字符串的长度要尽量长些,以保证每一行数据能读进去)之后,在字符串中以字符串长度做一个循环,从第一个字符串元素开始,作判断,如果元素是","就将","之前的字符串元素读入到一个新的字符串中(最好是读入到字符串数组中)。
有了这些就字符串数组,你可以再进一步操作了。如:"寿  县"为读入到的某个字符串数组中的元素,可以将其修改为"寿县",如果字符串是"1554.044738",可以用内部文件的方法将其转变成数字1554.044738。 特别注意:汉字是两个字节长,即 s="中国" 时,s(1:2)="中",s(3:4)="国"。
[/quote]
这个思路也是我刚开始想的,但是因为数据只是用逗号分隔,长度并不是固定的,就很麻烦,而且很托速度。[/quote]
如果没什么规律, 这个或者是挺适合的方法了.[/quote]
恩,谢谢了.先按照这么处理的,但是希望更好的方法.

我来回复

您尚未登录,请登录后再回复。点此登录或注册