【发布时间】:2021-03-15 20:16:07
【问题描述】:
我试图将文件的内容复制到字符串数组,但无法完全复制文件(它只是复制每行中的第一个字符)。我觉得我的语法有问题,可以用character, dimension(:,:) 来做,但它可以用character(:), dimension(:)。
这没有按预期工作:
character, allocatable :: list(:,:)
integer :: i, line_count, line_length
open(1, "input.txt", status="old", action="read")
line_count = count_file_lines(1) ! function that returns integer
line_length = longest_line_length(1) ! function that returns integer
allocate(list(line_count, line_length))
do i = 1, line_count
read(1, *) list(i,:)
end do
close(1)
这按预期工作:
character(:), allocatable :: list(:)
integer :: i, line_count, line_length
open(1, "input.txt", status="old", action="read")
line_count = count_file_lines(1) ! function that returns integer
line_length = longest_line_length(1) ! function that returns integer
allocate(character(line_length) :: list(line_count))
do i = 1, line_count
read(1, *) list(i)
end do
close(1)
我已经尝试在第一个示例中切换索引,但它仍然不起作用。我知道第一个示例是 2 级字符数组,但第二个示例中的数组是什么?也许它们都是相同类型的数组,而我的第一个索引错误。有人可以澄清一下吗?
【问题讨论】:
-
第一个 sn-p 不是有效的 Fortran,除非
line_count和line_length具有allocatable属性。最好在 “我记得” 半个版本上给出完整的独立示例。 -
@evets 我不知道它们是否相关,我已经为两者添加了整个代码。它们是不可分配的整数。你说它无效,但程序运行了,只是不是我想要的方式。
-
“这不起作用”实际上是什么意思?这句话没有说任何有用的东西。是否有任何错误信息?还是程序做错了什么?究竟是什么?
-
在第二个示例中,您有一个字符串数组stackoverflow.com/questions/33415590/…
-
@VladimirF 我的意思是它没有给出我预期的结果,我写了“它只是复制每一行中的第一个字符”,这是第一个示例。