一、模拟函数
1.数组
void severse_string(char arr[])
{
int len = strlen(arr);
int left = 0;
int right = len - 1;
while (left < right)
{
char tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left++;
right--;
}
}
int main()
{
char arr[] = "abcdef";
severse_string(arr);
printf("%s\n", arr);
return 0;
}
2.指针
#include<stdio.h>
#include<string.h>
void reverse(char* str) //指针接收
{
int len=strlen(str);
char* left=str; //用两个指针存地址,后面*解引用更方便
char* right=str+len-1;
while(left<right)
{
char tmp=0;
tmp=*left;
*left=*right;
*right=tmp;
left++; //指向下一个地址
right--;
}
}
int main()
{
char arr[256]={0};
gets(arr); //用scanf的话,遇到空格就会停止
reverse(arr);
printf("%s\n",arr);
return 0;
}
二、递归
#include<stdio.h>
void reserve(char* p)
{
if(*p!=0)
{
reserve(p+1);
printf("%c",*p); //递归到最后时,先返回的是最后一次递归的*p,即最后一个字符
}
else
return;
}
int main()
{
char arr[]={0};
gets(arr);
reserve(arr);
return 0;
}
三、总结
当然用正规的库函数strrev也可以啦~
嘿嘿嘿嘿
好啦掰掰啦~下期见!