strcpy函数执行莫名出错 10C

#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";
}

}

3个回答

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个的字符,这里就会出错。

daijunyiluoshiyong
小白白圣代 大哥,这个函数返回的结果只有“yes”和"no",就算输入20个字符也没毛病啊
接近 3 年之前 回复

rightornot函数的返回值应该字符串长度大于9了或者返回值不是个字符串

大兄弟,你可以搞个单步调试,然后对应的看看哪里出错了 应该就解决了

daijunyiluoshiyong
小白白圣代 我就是单步调试然后在strcpy那一步弹出0000*5然后中断了
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐