#include <stdlib.h>
#include <stdio.h>
char* convert(char* s, int numRows) {
int count=0;
int i;
int j;
char*Temp=s;
while(*s){
s++;
count++;
}
s=Temp;
char**res=(char**)malloc(sizeof(char*)*numRows);
for(i=0;i<numRows;i++){
res[i]=(char*)malloc(sizeof(char)*count);
}
char**Tmp=(char**)malloc(sizeof(char*)*numRows);
for(i=0;i<numRows;i++){
Tmp[i]=res[i];
}
while(*s){
for(i=0;i<numRows&&*s!=0;i++){
*res[i]=*s;
s++;
res[i]++;
}
for(j=numRows-2;j>=1&&*s!=0;j--){
*res[j]=*s;
s++;
res[j]++;
}
}
for(i=0;i<numRows;i++){
*res[i]=0;
}
for(i=0;i<numRows;i++){
res[i]=Tmp[i];
}
// for(i=0;i<numRows;i++){
// printf("%s\n",res[i]);
// }
char*result=(char*)malloc(sizeof(char)*(count+1));
char*resultTmp=result;
for(i=0;i<numRows;i++){
while(*res[i]){
*result=*res[i];
result++;
res[i]++;
}
}
*result='\0';
return resultTmp;
}
int main(){
char*s=(char*)malloc(sizeof(char)*15);
s=convert("hello", 2);
printf("%s",s);
return 0;
}
这边有一点要注意
while(*s){
for(i=0;i<numRows&&*s!=0;i++){
*res[i]=*s;
s++;
res[i]++;
}
for(j=numRows-2;j>=1&&*s!=0;j--){
*res[j]=*s;
s++;
res[j]++;
}
}
这段中要注意for循环中还要有*s!=0
否则会越界 因为一个循环做完 采取判断while 中的条件的
这个写的 内存用了过多了