这几行代码是什么意思?注释有点看不懂、第4、5条之间有什么联系吗?什么时候判断特殊行(STOP字符在一行的中间的情况)?

img

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

输入多行句子,最后一行是|,用来表示输入结束。
那两行就是用来判断 |前面是不是换行符,如果不是换行符,那说明|前面的是单词或别的,程序就不认为这个句子结束了。