void LineEdit(){
Stack S;
InitStack(S);
char ch;
printf("请输入...\n");
fflush(stdout);
ch = getchar();//获取输入字符
while (ch != EOF){
while (ch != EOF && ch != '\n'){
ELEMTYPE e;
switch (ch){
case '#':
if (StackEmpty(S)){//栈空时不能退格
printf("未输入任何字符.\n");
return;
}
Pop(S, e);//退格(即出栈)
break;
case '@':
if (StackEmpty(S)){//栈空时不能退行
printf("未输入任何字符.\n");
return;
}
ClearStack(S);//退行(即清空栈)
break;
default:
if (StackFull(S)){
printf("最多输入%d个字符\n", MAXSIZE);
return;
}
Push(S, ch);//默认是进栈
break;
}
ch = getchar();//进行下一次输入
}
printStack(S);//先打印栈
fflush(stdout);
ClearStack(S);//再清空栈
if (ch != EOF)//当输入为换行符
ch = getchar();//开始下一行输入
}
ClearStack(S);//输入为EOF(Ctrl+Z),清空栈,退出程序
}
栈应用之行编辑程序(C语言)
最新推荐文章于 2022-01-13 09:12:35 发布
该程序实现了一个基于栈的字符输入处理系统,允许用户输入字符并使用#(退格)、@(退行)操作。当输入#时,如果栈不为空则执行退格操作;输入@时,如果栈不为空则清空栈,模拟退行效果。默认情况下,字符被压入栈中。每输入一行后,会打印当前栈的内容,然后清空栈,准备接受下一行输入。程序在输入EOF(Ctrl+Z)时结束,清空栈并退出。
摘要由CSDN通过智能技术生成