c语言替换字符串中的子串

c语言替换字符串中的子串

#include
#include
int checkStr(char *s1, char *s2) //匹配字符串相不相等
{
   for (int i = 0; i < strlen(s2); i++)
    {
      if (s1[i] != s2[i]) return 0;
    }
   return 1;
}
void reStr(char *s1, char *s2, char *s3)//替换字符串
{
   int s1len = strlen(s1),
       s2len = strlen(s2),
       s3len = strlen(s3);
   int n1 = s1len - s2len;
   int n2 = s2len - s3len;
   if (n2 > 0)
    {
      //后面的字符串全部向前移n2个位置
      for (int i = s2len; i < s1len; i++)
       {
         s1[i - n2] = s1[i];
       }
       s1[s1len - n2] = '\0';
     }
   else if (n2 < 0)//后面的字符串全部向后移n2个位置
    {  
       for (int i = s1len; i >= s2len; i--)
       {
         s1[i - n2] = s1[i];
        }
        s1[s1len - n2 + 1] = '\0';
     }
    //然后在把要替换的字符串插进去
    for (int i = 0; i < s3len; i++)
      {
        s1[i] = s3[i];
       }
}
int replaceStr(char *s1, char *s2, char *s3)//替换字符串函数返回n表示替换了多少次
{
  int n = 0;
  for (int i = 0; i < strlen(s1); i++)
   {
     if (s1[i] == s2[0] && checkStr(&s1[i], s2) == 1)
      {
         reStr(&s1[i], s2, s3);
         n++;
       }
   }
   return n;
}
int main()
{
   // test!!!
   char s1[30] = "qwertyuerp";
   char s2[] = "er";
   char s3[] = "111111";
   printf("%d\n%s\n", replaceStr(s1, s2, s3), s1);
   return 0;
}


猜你喜欢

转载自blog.csdn.net/LiFangHui_/article/details/78718411