上QQ阅读APP看书,第一时间看更新
3.2.2 行编辑程序
一个简单的行编辑程序的功能是:接收用户输入的程序或数据,并存入数据区。由于用户进行输入时有可能出现差错,因此,在编辑程序中,每接受一个字符即存入数据区的做法显然是不恰当的。比较好的做法是,设立一个输入缓冲区,用来接受用户输入的一行字符,然后逐行存入数据区。如果用户输入出现错误,当发现输入有误时及时更正。例如,当用户发现刚刚输入的一个字符是错误的时候,可以输入一个退格符‘#’,以表示前一个字符无效;如果发现当前输入的行内差错较多时,则可以输入一个退行符‘@’,以表示当前行中的字符均无效。
例如,假设从终端接受了这样两行字符:
为了纠正以上的输入错误,可以设置一个栈,每读入一个字符,如果这个字符不是‘#’或‘@’,将该字符进栈。如果读入的字符是‘#’,将栈顶的字符出栈。如果读入的字符是‘@’,则将栈清空。
【例3.1】 试利用栈的“后进先出”思想,编写一个行编辑程序,前一个字符输入有误时,输入‘#’消除。当输入的一行有误时,输入‘@’消除当前行的字符序列。
【分析】逐个检查输入的字符序列,如果当前的字符不是‘#’和‘@’,则将该字符进栈。如果是字符‘#’,则将栈顶的字符出栈。如果当前字符是‘@’,则清空栈。
行编辑算法实现如下。
图3.8 程序运行结果
程序运行结果如图3.8所示。