Fortran 77实现类似Java input.next()的逐词输入方法咨询
最简实现Fortran 77版的
input.next()功能 嘿,作为Fortran 77新手,我太懂你不想手动逐个字符抠空格的麻烦了!其实Fortran本身就自带了类似Java input.next()的功能,完全不用自己写繁琐的字符处理逻辑,用列表导向输入就能搞定,这是最简洁的实现方式。
核心原理
Fortran 77的READ(*,*)语句(即用星号作为格式说明符的列表导向输入)会自动跳过所有空白字符(空格、制表符、换行),每次读取一段连续的非空白字符序列——这不就是你要的“逐个提取单词”吗?
示例代码
直接上能运行的代码,你可以复制测试:
PROGRAM EXTRACT_WORDS CHARACTER*20 WORD ! 定义足够长的字符变量容纳单词,可按需调整长度 PRINT *, "请输入一段文本(按Ctrl+D结束输入):" 10 CONTINUE ! 循环标签 ! 读取一个单词,遇到输入结束时跳转到20标签 READ(*,*,END=20) WORD PRINT *, "提取到的单词:", WORD GOTO 10 ! 继续读取下一个单词 20 CONTINUE STOP END
注意事项
- 要确保字符变量的长度(比如上面的
*20)足够容纳最长的目标单词,不然超过长度的单词会被截断。如果不确定长度,可以设得宽松些,比如*50或*100。 - 这个方法适配空格分隔的普通单词场景,如果你需要处理带引号、包含空格的特殊字符串,才需要手动处理字符,但你的需求刚好完美匹配这个最简方案。
内容的提问来源于stack exchange,提问作者kazım bekir
相关产品推荐
相关产品推荐

