在Fortran中使用read(*,*)
不能处理从用户输入的字符串中包含空格的情况。
请考虑以下代码:
character(Len = 1000) :: input = ' '
read(*,*) input
如果用户输入字符串“Hello,my name is John Doe”,那么只有“Hello”会被存储在输入中;空格后的所有内容都将被忽略。我的假设是编译器认为“Hello”是第一个参数,“my”是第二个参数,因此要捕获其他单词,我们必须使用类似read(*,*) input1, input2, input3...
的方法。这种方法的问题是我们需要为每个输入创建大型字符数组,并且需要知道将输入多少个单词。是否有任何方法可以解决这个问题?是否有一些函数可以实际读取整个句子,包括空格和所有内容?
sscanf
并不完全等价。在某些方面它们非常相似,但它们有足够的不同之处,以至于我通常会查阅资料。你可以在这里或者这里找到不错的概述。 - jvriesem