代码:
char* reverseLeftWords(char* s, int n){
int len=strlen(s);
int i=0;
char *m=(char *)malloc(sizeof(char)*(len+1));
char *str=m;
for(i=n;i<len;i++){
*m=*(s+i);
m++;
}
for(i=0;i<n;i++){
//m[len-n+i]=s[i];上面的m++已经让m指向n了,这样会使m产生越界。
//str[len-n+i]=s[i];
*m=s[i];
m++;
}
//*(str+len)='\0';
*m='\0';
return str;
}
分析:用malloc创建一个char *类型指针用来保存字符串,将s从n开始后面的放在m里,在把s[n]前面的放m里。
这里由于用m++使得m的指向变了,上面这个循环使得m指向了处。所以用str做一份拷贝,储存的地址相同,*m改变时,*str也发生改变。再返回str。返回值从指向往后输出。