编写程序实现从终端接收用户输入的数据,并存入用户数据区。输入#表示上一字符无效,输入@表示当前输入行整行无效。
/*
* line editor by using stack.
*
* fduan, Dec. 31, 2011.
*/
void line_editor()
{
using std::stack;
stack<char> ss;
std::string line;
int c;
while( ( c = getchar() ) != EOF )
{
line = "";
while( c != '\n' )
{
switch( c )
{
case '#':
if( ! ss.empty() )
ss.pop();
break;
case '@':
while( ! ss.empty() )
ss.pop();
break;
default:
ss.push( c );
break;
}
c = getchar();
}
while( ! ss.empty() )
{
c = ss.top();
ss.pop();
line.insert( line.begin(), c );
}
printf( "%s\n", line.c_str() );
}
}