代码之家  ›  专栏  ›  技术社区  ›  Koreyuki

在Fortran中,设置advance=“否”,但获取换行符

  •  2
  • Koreyuki  · 技术社区  · 6 年前

    我在下面编写代码,首先得到N个字符串的数目,然后连接N个字符串,并将其打印出来。我设置了advance=“no”选项,但它会转到newline。 我在这个网站上运行这个代码( https://yukicoder.me/problems/no/597 )

    program main
        implicit none
        integer::i,j,k,n
        character(1000)::str,ans
        read*,n
        do i=1,n
            read(*,'(a)')str
            str=trim(str)
            write(*,'(a)',advance='no')str
        end do
        print*,""
    end program
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   albert    6 年前

    这个 str=trim(str) 没有效果,它会将修剪过的字符串放回 str 并用空白填充(长度为 str公司 保持1000)。 与此相反,C.Fortran没有终止字符,但用空格填充字符串的其余部分。 将字符串写入输出时,应省略末尾的空格,以便:

    write(*,'(a)',advance='no') trim(str)