字符串的反转
1 普通的字符串反转函数
int inverse(char *str) { int length; char *p1; char *p2; p1 = str; length = strlen(str); p2 = str + length -1; if(str == NULL) { return -1; } while(p1 <p2) { char c = *p1; *p1 = *p2; *p2 = c; ++p1; --p2; } return 0; }
2 递归逆序的字符串反转


//通过递归的方式,逆向打印
//递归和全局变量(把逆序的结果存入全局变量)
char g_buf[1000]; //全局变量
void inverse3(char *p) { if(p == NULL) { return ; } if(*p == '\0') { return ; } inverse3(p+1); //strcat(g_buf, p); //把p所指向的内存空间拷到g_buf; //strncpy(g_buf, p, 1); //在p所指向的内存空间,每次只拷贝一个字符到g_buf,覆盖型拷贝 strncat(g_buf, p, 1); //在p所指向的内存空间,每次只拷贝一个字符到g_buf,链接型拷贝 }
//递归和非全局变量(递归指针做函数参数)
void inverse4(char *p, char *bufresult) { if(p == NULL || bufresult == NULL) { return ; } if(*p == '\0') { return ; } inverse4(p+1, bufresult); //strcat(g_buf, p); //把p所指向的内存空间拷到g_buf; //strncpy(g_buf, p, 1); //在p所指向的内存空间,每次只拷贝一个字符到g_buf,覆盖型拷贝 strncat(bufresult, p, 1); //在p所指向的内存空间,每次只拷贝一个字符到g_buf,链接型拷贝 } int main(void) { char buf[] = "abcdefg"; { char mybuf[1024] = {0}; inverse4(buf, mybuf); printf("mybuf: %s\n", mybuf); } return 0; }
欢迎加入作者的小圈子
扫描下方左边二维码加入QQ交流群,扫描下方右边二维码关注个人微信公众号并,获取更多隐藏干货,QQ交流群:859800032 微信公众号:Crystal软件学堂
|
作者:Liu_Jing bilibili视频教程地址:https://space.bilibili.com/5782182 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在转载文章页面给出原文连接。 如果你觉得文章对你有所帮助,烦请点个推荐,你的支持是我更文的动力。 文中若有错误,请您务必指出,感谢给予我建议并让我提高的你。 |

浙公网安备 33010602011771号