总结:怎么又是这种情况,定义的数组太大?放到函数里出错?不会吧,没有那么大吧?
1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 char ch[110];//定义在函数内就出错了,难道又越栈了? 5 int main() 6 { 7 int n,R,W,B,i,len; 8 scanf("%d%*c",&n);//由于要输入字符串,所以要考虑到enter 9 while(n--) 10 { 11 gets(ch); 12 len=strlen(ch); 13 R=0;W=0;B=0; 14 for(i=0;i<len;i++) 15 { 16 if(ch[i]=='R') R++; 17 else 18 { if(ch[i]=='W') W++; 19 else if(ch[i]=='B') B++; 20 } 21 } 22 for(i=0;i<R;i++) 23 printf("R"); 24 for(i=0;i<W;i++) 25 printf("W"); 26 for(i=0;i<B;i++) 27 printf("B"); 28 putchar('\n'); 29 } 30 system("pause"); 31 return 0; 32 } 33
运行时出错:
常见出错的原因可能有以下几种:
1、数组开得太小了,导致访问到了不该访问的内存区域
2、发生除零错误
3、大数组定义在函数内,导致程序栈区耗尽
4、指针用错了,导致访问到不该访问的内存区域
5、还有可能是程序抛出了未接收的异常