所以我刚刚开始学习Fortran,因为它显然仍然用于大量的科学计算。我已经讨厌的一件事是,与C ++相比,字符串是一场噩梦。目前,我只是想找到一种简单的方法来读取用户提供的字符串,然后将其吐出来而不需要所有尾随空格。
这是我现在的代码,根据我读过的代码,应该在后来的Fortran标准下工作,即2003/2008(尽管我很容易犯错误,我不知道)。我正在尝试在Code :: Blocks 13.12附带的minGW版本的gfortran上编译它。
program tstring
implicit none
character(100) io_name
character(len=:), allocatable :: final_name
print *, "What is your name, O master?"
read *, io_name
final_name = trim(io_name)
print *, "Excellent, master ", final_name, "!"
end program
编译得很好,但final_name
和“!”之间仍然有大量的空格。空格在某种程度上取决于我给io_name
的字符数,但不是特别合乎逻辑的方式(例如,15个字符的空格比30个更多)。特别让我感到困惑的是,如果我给io_name
(大约17到22之间)提供一定数量的字符,那么该程序不会打印出名称,而是会出现段错误。
对我来说,最困难的部分可能是很难找到好的Fortran文档,特别是对于2003及更高版本的标准。所以,如果有人能指出我一些好的文档,我真的很感激!
答案 0 :(得分:2)
获取更新的编译器。 Gfortran 4.8(AFAIK是最老的支持版本)应该可以正常使用您的代码。
字符串并不是真正的噩梦,只是停止用C ++思考并尝试在Fortran中进行翻译。很有可能在Fortran中编写tokenizer,解析器和DSL解释器。
关于资源,它在这里是偏离主题的,并且有许多书籍和教程。在http://fortranwiki.org/fortran/show/HomePage
搜索Fortran资源