Fortran Coder

查看: 1043|回复: 8
打印 上一主题 下一主题

[输入输出] 彭书上案例复现没成功

[复制链接]

12

帖子

4

主题

0

精华

入门

F 币
46 元
贡献
27 点
跳转到指定楼层
楼主
发表于 2023-10-21 09:37:35 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
data.txt文件
座号:1
中文:1英文:2数学:3
座号:2
中文:3英文:4数学:5

代码:、
[Fortran] 纯文本查看 复制代码
module typedef
    type student
        integer chinese,english ,math
    end type
    end module

program ex0907
use typedef
implicit none
type(student)::s
character(len=80)::filename="data.txt"
integer,parameter::fileid=10
logical alive
integer ::error
integer::no

inquire(file=filename,exist=alive)
if(.not.alive)then
    write(*,*)trim(filename),"doesn't exit"
    stop
end if

open (fileid,file=filename)
do while(.true.)
    read(fileid,"(5XI2,/,5XI3,6XI3,6XI3)",iostat=error)no,s
    if(error/=0)exit
    write(*,"(I2'号 中文:'I3'英文:'I3'数学:'I3)")no,s
end do
close(fileid)
stop
end
结果

下载.png (36.18 KB, 下载次数: 186)

下载.png
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

12

帖子

4

主题

0

精华

入门

F 币
46 元
贡献
27 点
沙发
 楼主| 发表于 2023-10-21 10:36:56 | 显示全部楼层
fcode 发表于 2023-10-21 10:16
建议
read(fileid,"(5XI2,/,5XI3,6XI3,6XI3)",iostat=error)no,s
改为

书上为啥操作不了呢?我听网友讲现在一个中文字体代表3个字节,所以5x这里有问题,可是我试了还是没有用

12

帖子

4

主题

0

精华

入门

F 币
46 元
贡献
27 点
板凳
 楼主| 发表于 2023-10-21 17:23:06 | 显示全部楼层
Transpose 发表于 2023-10-21 14:33
i3代表数字占三个位置,冒号后面必须长度是3,不足的可以用空格代替 例如
数学 ...

data文件调整为
座号: 1
中文:  1英文:  2数学:  3
座号: 2
中文:  3英文:  4数学:  5
代码
[Fortran] 纯文本查看 复制代码
module typedef
    type student
        integer chinese,english ,math
    end type
    end module
   
program ex0907
use typedef
implicit none
type(student)::s
character(len=80)::filename="data.txt"
integer,parameter::fileid=10
logical alive
integer ::error
integer::no

inquire(file=filename,exist=alive)
if(.not.alive)then
    write(*,*)trim(filename),"doesn't exit"
    stop
end if

open (fileid,file=filename)
do while(.true.)
    read(fileid,"(5XI2,/,5XI3,6XI3,6XI3)",iostat=error)no,s
    if(error/=0)exit
    write(*,"(I2'号 中文:'I3'英文:'I3'数学:'I3)")no,s
end do
close(fileid)
stop
end
还是一样的

12

帖子

4

主题

0

精华

入门

F 币
46 元
贡献
27 点
地板
 楼主| 发表于 2023-10-23 09:58:23 | 显示全部楼层
fcode 发表于 2023-10-21 19:19
一个中文有几个字符,与具体的编码有关。并不是固定不变的。
建议不要用格式符读取,直接改用 * 表控格式 ...

谢谢,但是按照您的代码还是没成功,不知道哪里出问题了

12

帖子

4

主题

0

精华

入门

F 币
46 元
贡献
27 点
5#
 楼主| 发表于 2023-10-23 10:50:30 | 显示全部楼层
DDHH 发表于 2023-10-23 09:58
谢谢,但是按照您的代码还是没成功,不知道哪里出问题了

已解决,谢谢各位
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-14 23:56

Powered by Tencent X3.4

© 2013-2024 Tencent

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