字符串反转技术推演过程

    xiaoxiao2022-06-22  45

    #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; }
    转载请注明原文地址: https://ju.6miu.com/read-1123034.html

    最新回复(0)