#include<stdio.h>
#include<stdlib.h>
#include <string.h>
#include <ctype.h>
char g_buf[100];
//字符串反转
int reverseStr(char*str)
{
char* start = str;
int len = strlen(str);
int ret = 0;
char* end = start+len-1;
char temp;
if (start==NULL)
{
ret = -1;
return ret;
}
while(start<end)
{
temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
return ret;
}
//递归调用
//通过递归的形式逆向打印
//递归和全局变量(把逆序的结果存入全局变量g_buf里)
//问题 多线程安全问题 :使用全局变量不安全 加锁
void reverseStr2(char *str)
{
char* p = str;
if (p==NULL)
{
return ;
}
if (*p=='\0')//递归结束的条件
{
return;
}
reverseStr2(p+1);
strncat(g_buf,p,1);
//strncpy(g_buf,p,1);
//printf("%c",*p);
}
//递归 把中间结果存放在局部变量里
void reverseStr3(char *str,char* buf)
{
char* p = str;
if (p==NULL||buf==NULL)//递归异常的结束条件
{
return ;
}
if (*p=='\0')//递归结束的条件
{
return;
}
reverseStr3(p+1,buf);
strncat(buf,p,1);
}
int main()
{
char str1[] = "abcdefgh";
char mybuf[1024] = {0};
reverseStr3(str1,mybuf);
printf("%s\n",mybuf);
system("pause");
return 0;
}
字符串反转技术推演过程
最新推荐文章于 2021-08-31 22:46:37 发布