24小时热门版块排行榜    

查看: 2347  |  回复: 14

xk6891

至尊木虫 (著名写手)

[交流] 【求助】读文本数据出现段错误[fortran] 已有2人参与

写的一段程序出现“段错误”,还请高手指点
code:
program main
implicit none
real a,b,c,a1,b1,c1,alpha,beta,gamma
character(len=10) today,now
integer i,j
character ele(768)
real pos1(256,3)
real pos2(256,3)
real ala(256,3)
character(len=20) rub1,rub2,rub3,rub4
pos1=1
pos2=1
ala=1


open(17,file='inname.dat')
read(17,"(A6,3(3XF6.3),3(2XF5.2),A16)"rub1,a1,b1,c1,alpha,beta,gamma,rub2

do i=1,768
read(17,"(A30,3(F8.3),A23,A1)"rub3,(pos1(i,j),j=1,3),rub4,ele(i)
ala(i,1)=pos1(i,1)/a1
ala(i,2)=pos1(i,2)/b1
ala(i,3)=pos1(i,3)/c1
end do
close(17)

open(23,file='OH_diople.car')
write(23,"(A17)""!BIOSYM archive 3"
write(23,"(A6)""PBC=ON"
write(23,"(A35)""Materials Studio Generated CAR File"

CALL DATE_AND_TIME(date=today,time=now)
write(23,"(A5,2XA8,2XA10)""!DATE",today,now

write(*,*)"Input the value of lattice parameters:"
write(*,*)"a="
read(*,*)a
write(*,*)"b="
read(*,*)b
write(*,*)"c="
read(*,*)c
write(23,"(A3,6(2XF8.4),1XA4)""PBC",a,b,c,alpha,beta,gamma,"(P1)"

do i=1,768
if(mod(i,3)/=0)then
pos2(i,1)=ala(i,1)*a
pos2(i,2)=ala(i,2)*b
pos2(i,3)=ala(i,3)*c
if(mod(i,2)/=0)then
write(23,"(A1,3(F15.9),1XA4,1XI1,7XA1,A1)"ele(i),pos2(i,j),"XXXX",1,ele(i),"+"
else
write(23,"(A1,3(F15.9),1XA4,1XI1,7XA1,A1)"ele(i),pos2(i,j),"XXXX",1,ele(i),"-"
end if
end if
end do
write(23,"(A3)""end"
write(23,"(A3)""end"
close(23)

stop

end program
要读的文件:
CRYST1   20.700   20.700   20.700  90.00  90.00  90.00 P 1           1
ATOM      1  OH2 TIP3W   5       3.668  10.082  15.904  1.00  0.00      WT1  O
ATOM      2  H1  TIP3W   5       3.224  10.451  15.101  1.00  0.00      WT1  H
ATOM      3  H2  TIP3W   5       3.092  10.379  16.627  1.00  0.00      WT1  H
ATOM      4  OH2 TIP3W  21       5.186  16.696  12.072  1.00  0.00      WT1  O
ATOM      5  H1  TIP3W  21       6.083  16.979  11.816  1.00  0.00      WT1  H
ATOM      6  H2  TIP3W  21       5.337  15.832  12.490  1.00  0.00      WT1  H
ATOM      7  OH2 TIP3W  44       3.786  16.318   1.310  1.00  0.00      WT1  O
ATOM      8  H1  TIP3W  44       3.781  15.388   1.196  1.00  0.00      WT1  H
……………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………
只有一个提示“段错误”,一天了没找到错误原因
回复此楼
人生自古多险阻,勤者自得天酬助。试问否泰何所依,枯藤老枝待新抽。临渊踌躇终迈步,振翅鹏起云霄冲。似是前程甚堪忧,他日振臂揽苍穹。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

whl2dxl

木虫 (小有名气)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
微尘、梦想(金币+2): 谢谢回复! 2011-04-24 18:00:46
您好,你的这几行是给变量付初值吗?
pos1=1
pos2=1
ala=1
如果是的话,这个程序就有点问题了
因为上面几个变量你定义的都是数组,要给数组付初值的话,就要把所有的都付一遍 ,  例如:
do  i=1,256
do  j=1,3
pos1(i,j)=1
pos2(i,j)=1
ala(i,j)=1
end do
end do
还有, 你读入文件时的格式都正确吗?

[ Last edited by whl2dxl on 2011-4-24 at 01:10 ]
2楼2011-04-24 01:09:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xk6891

至尊木虫 (著名写手)

引用回帖:
Originally posted by whl2dxl at 2011-04-24 01:09:04:
您好,你的这几行是给变量付初值吗?
pos1=1
pos2=1
ala=1
如果是的话,这个程序就有点问题了
因为上面几个变量你定义的都是数组,要给数组付初值的话,就要把所有的都付一遍 ,  例如:
do  i=1,256
do   ...

pos1=1
pos2=1
ala=1
恩,还好,我记得这个格式在哪里看过,好像是彭的fortran95中,是通过的程序
人生自古多险阻,勤者自得天酬助。试问否泰何所依,枯藤老枝待新抽。临渊踌躇终迈步,振翅鹏起云霄冲。似是前程甚堪忧,他日振臂揽苍穹。
3楼2011-04-24 09:20:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)


小木虫(金币+0.5):给个红包,谢谢回帖
能不能贴一个不带表情的代码,根本就看不出来原来是咋写的……
4楼2011-04-24 11:08:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xk6891

至尊木虫 (著名写手)

引用回帖:
Originally posted by snoopyzhao at 2011-04-24 11:08:37:
能不能贴一个不带表情的代码,根本就看不出来原来是咋写的……

CODE:
program main
implicit none
real a,b,c,a1,b1,c1,alpha,beta,gamma
character(len=10) today,now
integer i,j
character ele(768)
real pos1(256,3)
real pos2(256,3)
real ala(256,3)
character(len=20) rub1,rub2,rub3,rub4
pos1=1
pos2=1
ala=1


open(17,file='inname.dat')
read(17,"(A6,3(3XF6.3),3(2XF5.2),A16)"rub1,a1,b1,c1,alpha,beta,gamma,rub2

do i=1,768
read(17,"(A30,3(F8.3),A23,A1)"rub3,(pos1(i,j),j=1,3),rub4,ele(i)
ala(i,1)=pos1(i,1)/a1
ala(i,2)=pos1(i,2)/b1
ala(i,3)=pos1(i,3)/c1
end do
close(17)

open(23,file='OH_diople.car')
write(23,"(A17)""!BIOSYM archive 3"
write(23,"(A6)""PBC=ON"
write(23,"(A35)""Materials Studio Generated CAR File"

CALL DATE_AND_TIME(date=today,time=now)
write(23,"(A5,2XA8,2XA10)""!DATE",today,now

write(*,*)"Input the value of lattice parameters:"
write(*,*)"a="
read(*,*)a
write(*,*)"b="
read(*,*)b
write(*,*)"c="
read(*,*)c
write(23,"(A3,6(2XF8.4),1XA4)""PBC",a,b,c,alpha,beta,gamma,"(P1)"

do i=1,768
if(mod(i,3)/=0)then
pos2(i,1)=ala(i,1)*a
pos2(i,2)=ala(i,2)*b
pos2(i,3)=ala(i,3)*c
if(mod(i,2)/=0)then
write(23,"(A1,3(F15.9),1XA4,1XI1,7XA1,A1)"ele(i),pos2(i,j),"XXXX",1,ele(i),"+"
else
write(23,"(A1,3(F15.9),1XA4,1XI1,7XA1,A1)"ele(i),pos2(i,j),"XXXX",1,ele(i),"-"
end if
end if
end do
write(23,"(A3)""end"
write(23,"(A3)""end"
close(23)

stop

end program

人生自古多险阻,勤者自得天酬助。试问否泰何所依,枯藤老枝待新抽。临渊踌躇终迈步,振翅鹏起云霄冲。似是前程甚堪忧,他日振臂揽苍穹。
5楼2011-04-24 12:42:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xk6891

至尊木虫 (著名写手)

引用回帖:
Originally posted by snoopyzhao at 2011-04-24 11:08:37:
能不能贴一个不带表情的代码,根本就看不出来原来是咋写的……

呵呵,多谢您以前在一篇帖子中的指点,我虽然记不得如何出的错了,但是现在fortran读写处理一般的数据文件已经略略入门了
人生自古多险阻,勤者自得天酬助。试问否泰何所依,枯藤老枝待新抽。临渊踌躇终迈步,振翅鹏起云霄冲。似是前程甚堪忧,他日振臂揽苍穹。
6楼2011-04-24 12:44:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)


小木虫(金币+0.5):给个红包,谢谢回帖
你确定你上面贴的代码可以编译?呵呵……
7楼2011-04-24 13:43:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xk6891

至尊木虫 (著名写手)

引用回帖:
Originally posted by snoopyzhao at 2011-04-24 13:43:43:
你确定你上面贴的代码可以编译?呵呵……

介个……?
人生自古多险阻,勤者自得天酬助。试问否泰何所依,枯藤老枝待新抽。临渊踌躇终迈步,振翅鹏起云霄冲。似是前程甚堪忧,他日振臂揽苍穹。
8楼2011-04-24 14:52:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)


小木虫(金币+0.5):给个红包,谢谢回帖
引用回帖:
Originally posted by xk6891 at 2011-04-24 14:52:04:
介个……?

我是指 5 楼的,很明显很显的语法错误……
9楼2011-04-24 15:02:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xk6891

至尊木虫 (著名写手)

引用回帖:
Originally posted by snoopyzhao at 2011-04-24 15:02:25:
我是指 5 楼的,很明显很显的语法错误……

CODE:
program main
implicit none
real a,b,c,a1,b1,c1,alpha,beta,gamma
character(len=10) today,now
integer i,j
character ele(768)
real pos1(256,3)
real pos2(256,3)
real ala(256,3)
character(len=20) rub1,rub2,rub3,rub4
pos1=1
pos2=1
ala=1


open(17,file='inname.dat')
read(17,"(A6,3(3XF6.3),3(2XF5.2),A16)")rub1,a1,b1,c1,alpha,beta,gamma,rub2

do i=1,768
read(17,"(A30,3(F8.3),A23,A1)")rub3,(pos1(i,j),j=1,3),rub4,ele(i)
ala(i,1)=pos1(i,1)/a1
ala(i,2)=pos1(i,2)/b1
ala(i,3)=pos1(i,3)/c1
end do
close(17)

open(23,file='OH_diople.car')
write(23,"(A17)")"!BIOSYM archive 3"
write(23,"(A6)")"PBC=ON"
write(23,"(A35)")"Materials Studio Generated CAR File"

CALL DATE_AND_TIME(date=today,time=now)
write(23,"(A5,2XA8,2XA10)")"!DATE",today,now

write(*,*)"Input the value of lattice parameters:"
write(*,*)"a="
read(*,*)a
write(*,*)"b="
read(*,*)b
write(*,*)"c="
read(*,*)c
write(23,"(A3,6(2XF8.4),1XA4)")"PBC",a,b,c,alpha,beta,gamma,"(P1)"

do i=1,768
if(mod(i,3)/=0)then
pos2(i,1)=ala(i,1)*a
pos2(i,2)=ala(i,2)*b
pos2(i,3)=ala(i,3)*c
if(mod(i,2)/=0)then
write(23,"(A1,3(F15.9),1XA4,1XI1,7XA1,A1)")ele(i),pos2(i,j),"XXXX",1,ele(i),"+"
else
write(23,"(A1,3(F15.9),1XA4,1XI1,7XA1,A1)")ele(i),pos2(i,j),"XXXX",1,ele(i),"-"
end if
end if
end do
write(23,"(A3)")"end"
write(23,"(A3)")"end"
close(23)

stop

end program

人生自古多险阻,勤者自得天酬助。试问否泰何所依,枯藤老枝待新抽。临渊踌躇终迈步,振翅鹏起云霄冲。似是前程甚堪忧,他日振臂揽苍穹。
10楼2011-04-24 15:32:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 xk6891 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 26考研一志愿中国石油大学(华东)305分求调剂 +3 嘉年新程 2026-03-15 3/150 2026-03-15 13:58 by 哈哈哈哈嘿嘿嘿
[考研] 材料与化工 323 英一+数二+物化,一志愿:哈工大 本人本科双一流 +4 自由的_飞翔 2026-03-13 5/250 2026-03-14 19:39 by hmn_wj
[考研] 中科大材料专硕319求调剂 +3 孟鑫材料 2026-03-13 3/150 2026-03-14 18:10 by houyaoxu
[考研] 复试调剂 +4 z1z2z3879 2026-03-14 5/250 2026-03-14 16:30 by JourneyLucky
[考研] 0703化学求调剂 +5 很老实人 2026-03-09 5/250 2026-03-14 02:57 by JourneyLucky
[考研] 求调剂 +6 yfihxh 2026-03-09 6/300 2026-03-14 01:18 by JourneyLucky
[考研] 308求调剂 +3 是Lupa啊 2026-03-10 3/150 2026-03-14 00:30 by JourneyLucky
[考研] 26考研调剂 +3 ying123. 2026-03-10 3/150 2026-03-14 00:18 by JourneyLucky
[考研] 279求调剂 +3 抓着星星的女孩 2026-03-10 3/150 2026-03-13 23:47 by userper
[考研] 复试调剂 +9 Copy267 2026-03-10 9/450 2026-03-13 23:45 by userper
[考研] 279求调剂 +3 Dizzy123@ 2026-03-10 3/150 2026-03-13 23:02 by JourneyLucky
[考研] 0703,333分求调剂 一志愿郑州大学-物理化学 +3 李魔女斗篷 2026-03-11 3/150 2026-03-13 22:24 by JourneyLucky
[考研] 293求调剂 +3 世界首富 2026-03-11 3/150 2026-03-13 16:27 by JourneyLucky
[考研] 工科调剂 +4 Jiang191123! 2026-03-11 4/200 2026-03-13 15:15 by Miko19
[考研] 308求调剂 +3 是Lupa啊 2026-03-12 3/150 2026-03-13 14:30 by 求调剂zz
[考研] 一志愿华中师范071000,325求调剂 +5 RuitingC 2026-03-12 5/250 2026-03-13 10:43 by hyswxzs
[考研] 274求调剂0856材料化工 +12 z2839474511 2026-03-11 13/650 2026-03-13 10:39 by peike
[考研] 工科0856专硕化学工程269能调剂吗 +10 我想读研11 2026-03-10 10/500 2026-03-13 10:14 by Yuyi.
[考研] 一志愿江南大学085701环境工程专硕总分287求调剂 +5 18266118446 2026-03-09 5/250 2026-03-11 16:51 by 2020015
[考研] 0857环境调剂 +5 熠熠_11 2026-03-10 5/250 2026-03-11 10:59 by wang_dand
信息提示
请填处理意见