主题:快来帮帮忙啊,输出的文件被覆盖了,怎么办???
陈东辉哈哈
[专家分:0] 发布于 2010-12-21 20:21:00
program main
integer x(1951:2005,12)
real lat(118),lon(118),hig(118)
character st(118)*9,y(55)*4
open(1,file='F:\data\zhongjian\station.txt')
open(2,file='F:\data\zhongjian\lonlat.txt')
open(3,file='F:\data\zhongjian\nianfen.txt')
do i=1,118
read(1,'(a9)') st(i)
enddo
close(1)
do i=1,118
read(2,*)nx,lat(i),lon(i),hig(i),ny,nz,nm
enddo
close(2)
do i=1,55
read(3,*)y(i)
enddo
close(3)
do i=1,55
open(5,file='F:\data\tiaoxuan'//y(i)//'.txt')
do j=1,118
write(5,*)lat(j),lan(j)
enddo
enddo
close(5)
do i=1,118
write(*,'(a9)') st(i)
open(4,file='F:\data\tongji\'//st(i))
10 read(4,*)iy,(x(iy,j),j=1,12)
if(eof(4))then
close(4)
else
goto 10
endif
do j=1,55
open(5,file='F:\data\tiaoxuan'//y(j)//'.txt')
write(5,*)' ',x(j+1950,12)
enddo
enddo
end
各位高手们,小弟再次向大家发起求助了,还望大家多多关注,帮我解决,谢谢诸位了!
我的程序的主要目的就是要通过这个程序的运行最后按年份输出各个站的经纬度,以及低能见度天数,就输出这三行。主要是从不同文件中药筛选出来,我开始想了一些办法可最终没能成功,后来才决定使用这个程序试试,可是编译的时候遇到了如下的问题:
--------------------Configuration: tiaoxuan - Win32 Debug--------------------
Linking...
tiaoxuan.obj : error LNK2001: unresolved external symbol _LAN@4
Debug/tiaoxuan.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
tiaoxuan.exe - 2 error(s), 0 warning(s)
我从来没有遇到过,不知道该如何解决,我感觉我的程序逻辑很简单,怎么会遇到这样的问题呢?还烦请各位高手们,多多指点帮助啊!不胜感激!
最后更新于:2010-12-22 10:58:00
回复列表 (共12个回复)
沙发
陈东辉哈哈 [专家分:0] 发布于 2010-12-21 20:47:00
高手们,我又修改了程序可还是这种结果啊,这个程序相对刚才那个程序要简练一些。可能大家看起来更方便一些吧!谢谢大家的帮忙,错误还是一样的,都是不能通过编译。
program main
integer x(55,12)
real lat(118),lon(118),hig(118)
character st(118)*9,y(55)*4
open(1,file='F:\data\zhongjian\station.txt')
open(2,file='F:\data\zhongjian\lonlat.txt')
open(3,file='F:\data\zhongjian\nianfen.txt')
do i=1,118
read(1,'(a9)') st(i)
enddo
close(1)
do i=1,118
read(2,*)nx,lat(i),lon(i),hig(i),ny,nz,nm
enddo
close(2)
do i=1,55
read(3,*)y(i)
enddo
close(3)
do i=1,118
write(*,'(a9)') st(i)
open(4,file='F:\data\tongji\'//st(i))
10 read(4,*)iy,(x(iy,j),j=1,12)
if(eof(4))then
close(4)
else
goto 10
endif
do j=1,55
open(5,file='F:\data\tiaoxuan'//y(j)//'.txt')
write(5,*)lat(i),lan(i),x(j+1950,12)
enddo
enddo
end
板凳
dongyuanxun [专家分:7180] 发布于 2010-12-21 21:05:00
数组lan没有声明
3 楼
陈东辉哈哈 [专家分:0] 发布于 2010-12-21 21:18:00
哦,这样啊,您说了我一下就找到问题的所在了,是我最后在输出语句的时候把那个数组给拼写错了,唉!害得我反复的看了这么多遍,硬是没没能发现。太谢谢您了,我继续做了!
4 楼
yeg001 [专家分:14390] 发布于 2010-12-22 09:09:00
楼主如果按照比较好的习惯加上 implicit none 就不会出现这种情况了.
5 楼
陈东辉哈哈 [专家分:0] 发布于 2010-12-22 10:46:00
您说的是在哪里加上这个语句啊?没明白啊!还望您多多指教,谢谢您!
6 楼
陈东辉哈哈 [专家分:0] 发布于 2010-12-22 10:51:00
您好:
还要再向您请教一个问题,我的程序就是我第二次发的程序,我按您说的都修改了之后,能正常运行,可是最后只输出了最后一个数据,前面的都被覆盖了,我把118的那个循环改成1之后就只运行一次,那输出结果是正确的,多次循环后前面的就被覆盖了,我要怎么改啊?高手,还望您能再次指教,谢谢您!我感觉问题就出在最后那个输出语句上,可我一时还想不出该怎么修改,您再帮忙看看那![em10][em10]
7 楼
陈东辉哈哈 [专家分:0] 发布于 2010-12-22 10:51:00
您好:
还要再向您请教一个问题,我的程序就是我第二次发的程序,我按您说的都修改了之后,能正常运行,可是最后只输出了最后一个数据,前面的都被覆盖了,我把118的那个循环改成1之后就只运行一次,那输出结果是正确的,多次循环后前面的就被覆盖了,我要怎么改啊?高手,还望您能再次指教,谢谢您!我感觉问题就出在最后那个输出语句上,可我一时还想不出该怎么修改,您再帮忙看看那!
8 楼
陈东辉哈哈 [专家分:0] 发布于 2010-12-22 10:53:00
上面的问题,我再把程序发一下:
program main
integer x(1951:2005,13)
real lat(118),lon(118),hig(118)
character st(118)*9,y(55)*4
open(1,file='F:\data\zhongjian\station.txt')
open(2,file='F:\data\zhongjian\lonlat.txt')
open(3,file='F:\data\zhongjian\nianfen.txt')
do i=1,118
read(1,'(a9)') st(i)
enddo
close(1)
do i=1,118
read(2,*)nx,lat(i),lon(i),hig(i),ny,nz
enddo
close(2)
do i=1,55
read(3,'(a4)')y(i)
enddo
close(3)
do i=1,118
write(*,'(a9)') st(i)
open(4,file='F:\data\tongji\'//st(i))
10 read(4,*)iy,(x(iy,j),j=1,13)
if(eof(4))then
close(4)
else
goto 10
endif
do j=1,55
open(5,file='F:\data\tiaoxuan\'//y(j)//'.txt')
write(5,*)lat(i),lon(i),x(j+1950,13)
close(5)
enddo
enddo
end
9 楼
yeg001 [专家分:14390] 发布于 2010-12-22 14:52:00
1. 楼主连 implicit none 都不知道, 似乎是没怎么看过书.
2. 代码循环没缩进, fix格式, 用goto, 这些代码不是很愿意看.
3. 配了一下才看出来, 你每次循环都打开一次5号通道又关闭, 下次再打开文件就从头开始写, 当然冲掉之前的数据.
10 楼
陈东辉哈哈 [专家分:0] 发布于 2010-12-23 12:04:00
谢谢您的教诲,我再好好翻看一下课本,然后再按照您的意见试一试,问题确实问的有些低级了,不过我们课上确实没学过这些知识,好多都是我从咱们论坛上学到的,谢谢您,有问题了再向您请教!
不过您说的我还是没怎么看懂,还希望您能讲的明白些,对于您提到的第三条意见我也想到了,可是没想到好的解决办法,您是不是再帮忙替我想个好些的办法,我自己再把上面两条意见好好学习一下!
真心的谢谢您!
我来回复