#include
#include
#include
char stack[10000];
struct string{
char s[10000];
char b[10];
};
int top=-1;
main(){
char rightornot(char s[]);
int N;
struct string str[5];
int j;
// scanf("%d",&N);
for(j=0;j scanf("%s",str[j].s);
strcpy(str[j].b,rightornot(str[j].s));
}
for(j=0;j>=0;j++)
printf("%s",str[j].b);
return 0;
}
char rightornot(char s[]){
int i;
for(i=0;i<10000;i++)
{
if(s[i]=='('||s[i]=='[')
{
top++;
stack[top]=s[i];
}
if(s[i]==')')
{
if(stack[top]=='(')
top--;
else
{
break;
}
}
if(s[i]==']')
{
if(stack[top]=='[')
top--;
else
{
break;
}
}
if(s[i]=='/0')
{
break;
}
if(top==-1)
return "yes";
else
return "no";
}
}
大兄弟,你可以搞个单步调试,然后对应的看看哪里出错了 应该就解决了
1、首先,你得说明白到底出了什么错。
2、这里似乎有问题(应该编译不过吧)
for(j=0;j scanf("%s",str[j].s);
3、这一步容易出现越界
strcpy(str[j].b,rightornot(str[j].s));
s的长度是10000,而b的长度10,如果输入了超过9个的字符,这里就会出错。
rightornot函数的返回值应该字符串长度大于9了或者返回值不是个字符串