prev是previous的常用缩写,代表上一个、前一个。
在每次循环结尾把c
赋值给prev
,显然,这里用prev
来保存上一次循环得到的字符,我们可以看到,当下一个字符c
取到表示句子结束的字符时,直接退出循环,此时prev
的值就是上一次循环的值,或者说是终结符|
前一个字符。
可以看到第5条对前一个字符进行判断,当终结符之前是换行时,认为这只有一个终结符的最后一行是不完整的行,让p_lines=1
比如你想想,正常一行句子没有换行用|
结尾,肯定是一行,但是在输入|
之前敲了回车怎么算,第二行只有一个终结符,终结符不是单词,第二行就是一个没有单词的空行,所以认为这样的一行是不完整的行(特殊行)
而且还有一种更特殊的情况,只输入一个换行符,这样一个单词也没有,但也是一个特殊行,所以把prev
初始化为'\n'
,这样即使不进入循环(即第一个字符就是终结符),程序也能正确识别出这个特殊行
输入多行句子,最后一行是|,用来表示输入结束。
那两行就是用来判断 |前面是不是换行符,如果不是换行符,那说明|前面的是单词或别的,程序就不认为这个句子结束了。