字符串练习(1.统计字符串中字串的数量2.字符串逆序3.字符串替换)

来源:互联网 发布:文件夹 淘宝 编辑:程序博客网 时间:2024/05/03 05:23
#define _CRT_SECURE_NO_WARNINGS#include <stdlib.h>#include<stdio.h>#include <string.h>/************************************************************************//* 函数:功能 统计str中sub出现的次数                                    *//* 参数:count  统计的次数                                              *//* 返回值 0代表成功 -1代表出错                                          *//************************************************************************/int getSubCount(const char *str,const char*sub,int *count){int ret = 0;const char *p1 = str;const char *p2 = sub;int muyycount =0;if (str==NULL||sub==NULL||count==NULL){ret = -1;return ret;}do {p1 = strstr(p1,sub);//若找到 返回sub首次出现在p1的位置if (p1!=NULL){muyycount++;p1 = p1 + strlen(p2);}else{break;}} while (*p1!='\0');*count = muyycount;return ret;}/************************************************************************//* 功能:逆序 把字符串str逆序存放到buf中   参数:*//************************************************************************/void inverseStr(const char *str,char *buf){const char *p = str;if (str ==NULL||buf==NULL){return ;}if (*p=='\0'){return;}inverseStr(p+1,buf);strncat(buf,p,1);}/************************************************************************//* 功能:将字符串str出现的字串src替换为字符串dst并存放到out中           *//************************************************************************/void strrpl(const char *str, char *out, const char *src, const char *dst)  {  char *p = str;  int i =0;unsigned int len_s = strlen(src);unsigned int len_d = strlen(dst);// 这几段检查参数合法性  if((NULL == src) || (NULL == dst) || (NULL == str) || (NULL == out))  {  return ;  }  if((strcmp(str, "") == 0) || (strcmp(src, "") == 0))  {  return ;  }  while((*p != '\0'))  {  if(strncmp(p,src,len_s) != 0)  {  out[i] = *p;  //一个字符一个字符的写入out中p++; i++;}  else  {  int len_o = strlen(out);strcat_s(out,len_o+len_d+1,dst); //追加 第二个参数的意义 代表out整个缓冲区的长度p = p + len_s;  i = i + len_d; }  }  }  int main(){char *p = "ssabcdddfreeabcdefgqd1234abcdeabcdsfd";char *sub = "abcd";int num;int ret = 0;char buf[20]={0};char out[50]={0};char *dst = "hello";ret = getSubCount(p,sub,&num);if (ret!=0){printf("error\n");return -1;}printf("num:%d\n",num);inverseStr(sub,buf);printf("buf:%s",buf);strrpl(p, out,sub, dst);printf("out:%s\n",out);system("pause");return 0;}

0 0
原创粉丝点击