高手帮忙(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]
----------------解决方案--------------------------------------------------------
最好能把你输入的数据发出来 是不是有空格
----------------解决方案--------------------------------------------------------
知道哪的问题了
scanf("%d",&n);//输入算术表达式的个数n
getchar(); ///这里加一个这个
for(i=n;i>0;i--)//输入n个算术表达式
{
scanf("%s",s);
printf("%d\n",peidui(s));
}
----------------解决方案--------------------------------------------------------
哈哈,我刚弄明白的一个问题,
gets遇到回车结束,scanf()后面要按回车键,但回车这个字符仍然留在缓冲里,这个回车键中的换行符被gets捕捉到了,就立即结束了,函数调用也是这样.
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]tiw[/un] 在 2008-5-16 16:48 的发言:[/bo]
哈哈,我刚弄明白的一个问题,
gets遇到回车结束,scanf()后面要按回车键,但回车这个字符仍然留在缓冲里,这个回车键中的换行符被gets捕捉到了,就立即结束了,函数调用也是这样. ...
哈哈,我刚弄明白的一个问题,
gets遇到回车结束,scanf()后面要按回车键,但回车这个字符仍然留在缓冲里,这个回车键中的换行符被gets捕捉到了,就立即结束了,函数调用也是这样. ...
能不能说清楚点 没明白
----------------解决方案--------------------------------------------------------
执行不对的错误是什么
----------------解决方案--------------------------------------------------------
因为scanf遇 回车,tab键,空格停止,所以回车仍留在缓冲里,gets遇到回车结束,个回车键中的换行符被gets捕捉到了,就立即结束了,
----------------解决方案--------------------------------------------------------