strcpy函数执行莫名出错

#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了或者返回值不是个字符串