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;
}
```