今天来分享一个字符串逆序问题,其实刚开始写的时候,代码里面遇到了很多问题,比如指针的形式错误,函数的调用时形参与实参形式不匹配等问题,花了很久的时间去理解,终于能够理解那些代码的书写。具体的问题以及我本人的理解下次再细细说吧。下面是字符串逆序的主要代码:
一、主函数
我输入的字符串是"abcdef",首先是对于自定义函数的函数声明,在书写函数时,应先声明再调用,这是以后必须要用到的,最好是要从开始养成好习惯。
int main()
{
void inverted_sequence(char *);
char arr[]="abcdef";
inverted_sequence(arr);
printf("%s",arr);system("pause");
return 0;
}
二、自定义函数1
此段代码完成了五个步骤,步骤一:将字符串首元素赋值给变量z。步骤二:将字符串末元素(\0的前一位元素)赋值给首元素。步骤三:将字符‘\0’赋值给字符串末元素(\0的前一位元素)。步骤四:函数的递归将中间的字符串进行逆序操作。步骤五:将z中的开始的字符串首元素赋值给末元素(\0的前一位元素)。最终完成逆序操作。
void inverted_sequence(char *str)
{
int my_strlen(char*);
int z=*str;//
int right=my_strlen(str)-1;
*str=*(str+right);
*(str+right)='\0';
if(my_strlen(str+1)>=2)
{
inverted_sequence(str+1);
}
*(str+right)=z;
}
三、自定义函数2
由于题目要求需要自定义计算长度的函数,所以在代码中加入了计算字符串长度的代码。
int my_strlen(char *str)
{
int z=0;
while(*str!='\0')
{
z++;
str++;
}
return z;
}
最后,希望这段代码对你们有所帮助。