可変行を含む 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]
このエラーを修正する方法についてのアイデア、助けてくれてありがとう。