| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3585 人关注过本帖
标题:链栈 缓冲区输入模拟
只看楼主 加入收藏
善丑恶
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2020-11-28
结帖率:0
收藏
 问题点数:0 回复次数:0 
链栈 缓冲区输入模拟
如下图所示,当我们在DOS命令窗口输入指令或者数据时,
由于不能确保输入的数据完全不出错, 并不采用“每接收一个字符就存入程序变量”的方案,而是建立一个输入数据缓冲区,用于暂存用户输入的数据,当接收回车键后,数据被存入程序变量。
如果用户输入错误,可以使用退格键,删除错误的内容和缓冲区的数据。

现在用栈模拟一个输入缓冲区。规定用户的输入:

1:若是退格符#,从栈顶删去一个元素,即出栈Pop;

2:若是退行符@,将字符栈清空,即clear;

3:若不是#或@,即为有效字符,将该字符入栈,即Push;

重要事项:main()函数中不允许出现对于链栈结点的数据域data和指针域next的直接使用操作。所有功能均通过子函数完成。


输入要求:
输入不定长的任意字符

输出要求:
输出经过处理后最后被写入程序的字符

思路提示:
程序中出现了循环条件while(scanf("%c",&ch)!=EOF)
意思是循环的输入1个字符串,每1个字符都存入变量ch中,当按下回车时代表到了字符串结尾,返回EOF
相当于scanf("%c",&ch); ch!=’\0’

但是!这句无法在windows环境下运行, 如果大家要在VC或VS软件中调试程序, 请把while(scanf("%c",&ch)!=EOF)替换成while((ch=getchar())!=’\n’)










#include <stdio.h>
1

typedef struct node{
    datatype data;
    struct node* next;
}LinkStack;
1


void Traverse(LinkStack *top){
    for(LinkStack *p=top->next;p;p=p->next){
        printf("%c",p->data);
    }
    putchar(10);
}
int main(){
    char ch;
   
    LinkStack *top;
    InitStack(&top);

   
    while(scanf("%c",&ch)!=EOF)  //循环输入若干字符,每个字符存放在ch中,按回车结束输入
    {
1

    }
1

    return 0;
}
搜索更多相关主题的帖子: 缓冲区 EOF 数据 输入 字符 
2021-05-18 22:36
快速回复:链栈 缓冲区输入模拟
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012189 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved