| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 854 人关注过本帖
标题:高手帮忙(gets和scanf问题)
只看楼主 加入收藏
zhuyuanronaldo
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-11-29
收藏
 问题点数:0 回复次数:6 
高手帮忙(gets和scanf问题)
#include<stdio.h>
#include<string.h>
#include<malloc.h>
typedef struct stack
{
    char *top;
    char *base;
    int size;
};
stack st;
void init()//构造空栈
{
    st.base=(char *)malloc(200*sizeof(char));
    st.top=st.base;
    st.size=200;
}
void push(char c)//入栈
{
    *st.top++=c;
}
void pop()//出栈
{
    st.top--;
}
int peidui(char s[])//配对函数
{
    int i,lengh;
    lengh=strlen(s);
    init();
    for(i=0;i<lengh;i++)
    {
        if(s[i]=='('||s[i]=='['||s[i]=='{'||s[i]==')'||s[i]==']'||s[i]=='}')
        {
            if(s[i]=='('||s[i]=='['||s[i]=='{') push(s[i]);
            else if(s[i]==')'&&*(st.top-1)=='(') pop();
            else if(s[i]==']'&&*(st.top-1)=='[') pop();
            else if(s[i]=='}'&&*(st.top-1)=='{') pop();
            else return 0;
        }
    }
    if(st.top==st.base) return 1;
    else return 0;
}
int main()
{
    int n;
    int i;
    char s[200];
    scanf("%d",&n);//输入算术表达式的个数n
    for(i=n;i>0;i--)//输入n个算术表达式
    {
        [bo]scanf("%s",s);[/bo]
        printf("%d\n",peidui(s));
    }
    return 0;
}
这是一个求括号配对的问题,用到了栈
[bo]为什么我把scanf("%s",s);换成gets(s);,执行就不对了[/bo]
搜索更多相关主题的帖子: gets scanf 
2008-04-15 13:03
yxwsbobo
Rank: 5Rank: 5
等 级:职业侠客
帖 子:345
专家分:306
注 册:2007-10-29
收藏
得分:0 
最好能把你输入的数据发出来 是不是有空格

How are you 怎么是你?
How old are you   怎么老是你?
2008-04-15 14:03
yxwsbobo
Rank: 5Rank: 5
等 级:职业侠客
帖 子:345
专家分:306
注 册:2007-10-29
收藏
得分:0 
知道哪的问题了

    scanf("%d",&n);//输入算术表达式的个数n
    getchar();      ///这里加一个这个
    for(i=n;i>0;i--)//输入n个算术表达式
    {
        scanf("%s",s);
        printf("%d\n",peidui(s));
    }

How are you 怎么是你?
How old are you   怎么老是你?
2008-04-15 14:06
tiw
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2008-2-13
收藏
得分:0 
哈哈,我刚弄明白的一个问题,
gets遇到回车结束,scanf()后面要按回车键,但回车这个字符仍然留在缓冲里,这个回车键中的换行符被gets捕捉到了,就立即结束了,函数调用也是这样.
2008-05-16 16:48
夜火
Rank: 1
等 级:新手上路
帖 子:149
专家分:0
注 册:2007-5-30
收藏
得分:0 
[bo]以下是引用 [un]tiw[/un] 在 2008-5-16 16:48 的发言:[/bo]

哈哈,我刚弄明白的一个问题,
gets遇到回车结束,scanf()后面要按回车键,但回车这个字符仍然留在缓冲里,这个回车键中的换行符被gets捕捉到了,就立即结束了,函数调用也是这样. ...

能不能说清楚点 没明白

2008-05-16 18:26
夜火
Rank: 1
等 级:新手上路
帖 子:149
专家分:0
注 册:2007-5-30
收藏
得分:0 
执行不对的错误是什么

2008-05-16 18:30
tiw
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2008-2-13
收藏
得分:0 
因为scanf遇 回车,tab键,空格停止,所以回车仍留在缓冲里,gets遇到回车结束,个回车键中的换行符被gets捕捉到了,就立即结束了,
2008-05-22 12:53
快速回复:高手帮忙(gets和scanf问题)
数据加载中...
 
   



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

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