Gau*_*tam 11 string fortran gfortran fortran77 fortran90
如果要从用户读取的字符串包含空格,则在Fortran中使用read(星号,星号)似乎不起作用.请考虑以下代码:
character(Len = 1000) :: input = ' '
read(*,*) input
Run Code Online (Sandbox Code Playgroud)
如果用户输入字符串"Hello,我的名字是John Doe",则只有"Hello"将存储在输入中; 空间被忽视后的一切.我的假设是编译器假定"Hello"是第一个参数,而"my"是第二个,所以要捕获其他单词,我们必须使用read(,)input1,input2,input3之类的东西. ......这种方法的问题是我们需要为每个输入创建大字符数组,并且需要确切地知道将输入多少个单词.有没有办法解决??有些功能会实际读取整个句子,空格和所有内容吗?非常感谢!
Roo*_*ook 24
character(100) :: line
write(*,'("Enter some text: ",\)')
read(*,'(A)') line
write(*,'(A)') line
end
Run Code Online (Sandbox Code Playgroud)
...将读取最大长度为100的文本行(足以用于大多数实际目的)并将其写回给您.根据自己的喜好进行修改.
而不是read(*, *),尝试read(*, '(a)').我不是Fortran专家,但第二个参数read是格式说明符(相当于sscanfC中的第二个参数). *这意味着你不想要的列表格式.例如,您还可以说a14是否要将14个字符作为字符串读取.
| 归档时间: |
|
| 查看次数: |
33294 次 |
| 最近记录: |