【发布时间】:2014-10-23 05:16:00
【问题描述】:
好的,所以在我的程序中,我应该从用户那里获取数据文件的名称,而不是打开它并读取内容。但是当我打开并阅读它时,所有字符最终都是 ****** 并且所有整数最终都是 0。IDK 是我在文件中读取的方式还是格式?
该文件将包含如下内容:(城市数是第一个数字)
4
SanDiego
0
350
900
1100
Phoenix
350
0
560
604
Denver
900
560
0
389
Dallas
1100
604
389
0
到目前为止,我的代码是我首先输入第一个数字而不是每个 firstnumber * I + I pass 应该进入字符数组城市。现在我将其余的数字存储到一个整数数组中,但真的希望将它存储到一个名为 d_table 的整数矩阵中,但我想不出一种在读取时立即执行此操作的方法。
PROGRAM p4
IMPLICIT NONE
INTEGER :: number, status, I, J, K, permutation = 0, distance = 0, distance = 999999
CHARACTER(50) :: filename ! Filenames longer than 50 are truncated
CHARACTER(20), DIMENSION(10) :: city
INTEGER, DIMENSION(100) :: temp
INTEGER, DIMENSION(10,10) :: d_table
INTEGER, DIMENSION(10) :: path, best_path
WRITE (*, '(1x,A)', ADVANCE="NO") "Enter filename: "
READ *, filename
! Open the file we created and read the contents
OPEN(UNIT=15, FILE=filename, STATUS="OLD", ACTION="READ",&
IOSTAT=status)
IF(status /= 0) THEN
PRINT *, "ERROR, could not open file for reading."
STOP
END IF
READ (UNIT=15, FMT = 100, IOSTAT=status) number
J = 0
K = 0
DO I = 0, number*number
IF(I == J*number+J) THEN
READ (UNIT=15, FMT = 200, IOSTAT=status) city(J)
J = J + 1
ELSE
READ (UNIT=15, FMT = 100, IOSTAT=status) temp(K)
K = K + 1
END IF
END DO
K = 0
DO I = 0, number
DO J = 0, number
d_table(I,J) = temp(K)
K = K + 1
END DO
END DO
100 FORMAT(I6)
200 FORMAT (A)
END PROGRAM p4
【问题讨论】:
标签: arrays integer fortran character