上次的题数组越界了....

发布于 2021-11-04 10:41:15 字数 1618 浏览 950 评论 2

还是上次的题,换了一个思路编,就悲剧了。老是打印出来“烫”,“?”,老师和同学说可能是数组越界了,怎么办啊? 调了5个小时了啊。

#include<iostream.h>
#include<string.h>
#include<iomanip.h>
#include<ctype.h>

void main(void)
{
 char a[1024];
 char b[1024][100];
 int c[1024];
 int i;
 int j = 0;
 int k = 0;
 int m = 0;
 int charLength;
 int counter = 0;
 int counter1 = 0;
 int max = 0;
 int x;
 
 cout<<"输入串:(Enter结束输入。)"<<endl;
 cin.getline( a, 1024, 'n' );
 charLength = strlen(a);
 
 for( i = 0; i < charLength; i++ )
 {
  while( a[i] != '' )
  {
   while( isdigit( a[i] ) )
   {
    while( j <= 1024 )
    {
     while( a[i] != '' )
     {
      while( k <= 1024 )
      {
       while( a[i] != '' )
       {
        if( !isdigit( a[i] ) )
        {
         break;
        }
        else
        {
         b[j][k] = a[i];
         i++;
         counter++;
        }
        k++;
       }
       c[m] = counter;
       m++;
       while( counter > max )
       {
        max = counter;
        counter = 0;
       }
       if( !isdigit( a[i] ) || a[i] == '' )
       {
        j++;
        break;
       }
       else
       {
        i++;
       }
       i++;
      }
      k = 0; 
      counter1++;
      break;
     }
     break;
    }
   }
   break;
  }
 }
 cout<<"输出结果:"<<endl;
 
 m = j;
 for( j = 0; j < counter1; j++ )
 {
  x = max - c[j] + 1;
  cout<<setw(x)<<setfill(' ');
  for( k = 0; k < c[j]; k++ ) 
  {
   cout<<setiosflags(ios::right)<<b[j][k];
  }
  
  cout<<endl;
 }
 
 cout<<endl;
 
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

陌若浮生 2021-11-08 18:32:07

谢谢啊 我去试试。

画骨成沙 2021-11-07 00:37:50

这个程序要检查数组越界很简单,循环完后打印相应的值。如果程序运行出错将操作数组元素的语句注释掉。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文