close
撰寫者:謝翔宇

----------------------------------------------------------------------------------------------------
pro oldwritenew ;將舊資料寫入新檔案,並加入標題和一項新資料。而該筆新資料是以陣列型式寫成的。

close,/all

in=0
openr, 1, 'D:\IDL method\NGC6633.prn' ;開啟星表原始檔,該檔案沒有標題列
while not (eof(1)) do begin ;開始讀檔案直到結尾
readf, 1, format='(5x,i3,3x,f5.1,3x,f5.1,3x,f5.1,3x,f5.2,3x,f5.2)',No0,M0,X0,Y0,mux0,muy0
in=in+1 ;計數星表中有幾筆資料。有讀到一行計數器就+1
endwhile
print,' number of stars =' ,in ;給我看到底有幾顆!
close,/all

openr, 1, 'D:\IDL method\NGC6633.prn' ;再次開啟星表原始檔
openw, 3, 'D:\IDL method\NGC6633pc.txt' ;創建新檔案,供星表資料輸入
printf, 3, ' No M X Y mux muy Pc' ;將新檔案寫入標題

pc=fltarr(in+1) ;建立欲寫入之新資料陣列,in要加1的原因下面會寫
i=0 ;設定起始讀值
pc(0)=1 ;新資料陣列之初始值
while not (eof(1)) do begin ;不到結尾讀不停
readf, 1, format='(5x,i3,3x,f5.1,3x,f5.1,3x,f5.1,2(3x,f5.2))',No0,M0,X0,Y0,mux0,muy0 ;將星圖讀成這些參數
printf, 3, format='(5x,i3,3x,f5.1,3x,f5.1,3x,f5.1,2(3x,f5.2),3x,i3)',No0,M0,X0,Y0,mux0,muy0,pc(i) ;立刻把這參數寫入,再多加一個pc(i)
pc(i+1)=pc(i)+1 ;把下一項pc(i)加上1
i=i+1 ;把項次計數加1
endwhile
;因為星圖檔案結尾有in項,但寫入最後一個pc(in)後會再加1才endwhile,故pc=fltarr(要比in多1項)才裝得下
close,/all ;所以實際上pc(i)有in+1項,但只會寫入到pc(in)項就結束了。
end
arrow
arrow
    全站熱搜

    YAP 發表在 痞客邦 留言(0) 人氣()