DDHH 发表于 2023-10-23 09:58 已解决,谢谢各位 |
fcode 发表于 2023-10-21 19:19 谢谢,但是按照您的代码还是没成功,不知道哪里出问题了 |
DDHH 发表于 2023-10-21 10:36 一个中文有几个字符,与具体的编码有关。并不是固定不变的。 建议不要用格式符读取,直接改用 * 表控格式。 read(fileid,"(5XI2,/,5XI3,6XI3,6XI3)",iostat=error)no,s 改为 character(len=1):: str !//这句放前面定义语句区域 read(fileid,*,iostat=error) str,no,str,s%chinese,str,s%english,str,s%math 文件内容就可以比较自由(空格数量可以不固定,大于等于1个空格即可,座号和冒号:之间不能用空格) 座号: 1 中文: 1 英文: 2 数学: 3 |
DDHH 发表于 2023-10-21 10:36 因为格式化读取,对输入文件要求太苛刻,多一个空格,少一个空格都不行。 所以实践中,我几乎不会选择使用格式化读取。 能用 * 表控的,一律用表控。不能用表控的,我会尽可能想办法间接用表控。 |
Transpose 发表于 2023-10-21 14:33 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 |
i3代表数字占三个位置,冒号后面必须长度是3,不足的可以用空格代替 例如 [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 |
fcode 发表于 2023-10-21 10:16 书上为啥操作不了呢?我听网友讲现在一个中文字体代表3个字节,所以5x这里有问题,可是我试了还是没有用 |
建议 read(fileid,"(5XI2,/,5XI3,6XI3,6XI3)",iostat=error)no,s 改为 read(fileid,*,iostat=error)no,s 然后文件内容改为: 1 30 50 20 2 13 15 25 |
捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )
GMT+8, 2024-11-23 23:26