可変行を含む 2 列のテキスト ファイルを配列に読み込みたいだけです。テキスト ファイルの 1 列目は秒単位の時間で、2 列目は温度です。ちょうどこのような:
1.1 10
2.1 20
3.2 30
4.2 40
5.3 50
6.3 60
7.4 70
以下は私が書いたコードです:
モジュール myData
line_info と入力
リアルタイム
実:: 温度
エンドタイプ
タイプデータリンク
type(line_info) :: time_temp
タイプ(データリンク)、ポインタ :: 次へ
エンドタイプ
タイプ(line_info)、割り当て可能:: FileInfoArr(:)
エンドモジュール
プログラム Console1
myData を使用する
暗黙のなし
! 変数
type(line_info),allocatable :: time_temp_arr(:)
!real,allocatable :: File2Arr(:)
文字 (len=80) :: FileFullName="C:\t.txt"
File2Arr(FileFullName,time_temp_arr) を呼び出す
プログラム コンソールの終了1
サブルーチン File2Arr(FileFullName,InfoArray)
myData を使用する
文字 (len=80) :: FileFullName
タイプ(line_info)、割り当て可能:: InfoArray(:)
タイプ(データリンク)、ポインタ::ヘッド
タイプ(データリンク)、ポインタ :: p
整数エラー、サイズ、i
ロジカルアライブ
! ファイルが存在するかどうかを確認する
問い合わせる (ファイル = ファイルのフルネーム、存在 = 生きている)
もし(生きている==0)なら
write(*,*) FileFullName, "存在しません。"
止まる
終了する場合
! ポインターを使用してファイルを読み取る
open(10, file=FileFullName, status="old", iostat=エラー)
もし(エラー/=0)なら
write(*,*) "ファイルのオープンに失敗しました!"
止まる
終了する場合
割り当てる(ヘッド)
nullify(head%next)
p=>ヘッド
サイズ=0
!read(10,"(A80)") tempstr
do while(.true.)
read(10, fmt=*, iostat=エラー) p%time_temp
if(エラー/=0) 終了
サイズ=サイズ+1
割り当て (p%next、統計 = エラー) ! 次の行を追加
もし(エラー/=0)なら
write(*,*) "メモリ不足です!"
止まる
終了する場合
p=>p%next
nullify(p%next)
終了する
!リンク情報を配列に保存
割り当て(InfoArray(サイズ))
p=>ヘッド
i=0
do while(associated(p%next))
i=i+1
InfoArray(i)=p%time_temp
p=>p%next
!write(*,*) FileInfoArr(i)%time, FileInfoArr(i)%temp
終了する
サブルーチン終了
コンパイルすると、次のようになりました。
エラー #8055: プロシージャには、ALLOCATABLE、ASYNCHRONOUS、OPTIONAL、POINTER、TARGET、VALUE、または VOLATILE 属性を持つ仮引数があります。必要な明示的なインターフェイスが元のソースから欠落しています。[TIME_TEMP_ARR]
このエラーを修正する方法についてのアイデア、助けてくれてありがとう。