m0_62284963 2021-09-30 13:37 采纳率: 33.3%
浏览 25

我用c写了一下Z型变换,能运行成功,但是我修改了一个小地方就不行了,修改的地方我注释了一下,希望来这里寻求一下帮助。


char * convert(char * s, int numRows)
{ 
   int longs = strlen(s); 
  if( numRows>=longs )
  {
      return s;
  }
  if( numRows == 1 )
  {
      return s;
  }
  char arr[1001][1001]={0};
  char arr1[1001]={0};//就是这里 我问一下 我把1001内容定为了0,然后返回失败
  int k=0;
  int j=0;
  int i=0;
  while(s[k])
  { 
    while( i<numRows && s[k])
    {
        arr[i][j]=s[k];
         i++;
         k++; 
    }
    i -=2;
    j++; 
    while(i && s[k])
    {
      arr[i][j]=s[k];
      i--;
      j++;
      k++;
    }
  } 
    int ret =0;
    for(int m =0; m<numRows;m++)
    {
      for(int n=0;n<j;n++)
      {
        if(arr[m][n])
        {
         arr1[ret]=arr[m][n];
         ret++;
        }
      }
    }
    return arr1; 
  }

  
```c
char* convert(char* s, int numRows) {
        if (numRows >= (int)strlen(s))
         { 
             return s; 
         }
        if (numRows == 1)
         { 
             return s;
         }
        int i = 0, j = 0, k = 0; 
        char arr[1001][1001] = { 0 };
        char *arr1 = (char *)malloc(sizeof(char) * 1001);//这里我这次使用
        memset(arr1, 0, 1001);//的是开辟空间和memset来初始化,然后就能成功
        while (s[k]) 
        {
            while (i < numRows && s[k]) 
            { 
                arr[i][j] = s[k];
                i++;
                k++;
             }
            i -= 2; //表示第n-1行
            j++;
            while (i && s[k]) 
            {
                 arr[i--][j++] = s[k++]; 
            }
        }
        int ret = 0;
        for (int m = 0; m < numRows; m++) 
        {
            for (int n = 0; n < j; n++) 
            {
                if (arr[m][n]) 
                {
                    arr1[ret++] = arr[m][n];
                }
            }
        }
        return arr1;
    }

```

  • 写回答

1条回答 默认 最新

  • baidu_30233079 2021-09-30 14:24
    关注

    通过int arr1[1001]定义的变量是局部变量,在栈里面,你却把它返回了,再次用的时候就把栈踩了。
    这个问题不是初始化问题,是变量作用域问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月30日

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境