字符串基本处理函数(strrep,strins,strdel)

Strrep()是将字符串中的某一子字符串用另一个子字符串的内容来替换。 此法并不会改变字符串的长度,若替换的子字符串较原子字符串长,则会覆盖掉原字符串中的内容。

Strins()是将欲插入的字符串插入至原字符串中的某个位置,插入完成后,字符串的总长度会是两个字符串的总和。

Strdel()是从s1某个特定的位置pos开始,依某长度len删除子字符串。

#include <stdio.h>
#include <string.h>

char *Strrep(char *s1,char *s2,int pos)//字符串的取代
{
 int i,j;
 pos--;//
计算取代的起始位置,减1使其成为索引值(从0计数)
 i=0;
 for (j=pos;s1[j]!='/0';j++)//
从取代的起始位置开始
 {
  if (s2[i]!='/0')   
  {
   s1[j]=s2[i];//
进行取代
   i++;
  }
  else
  {
   break;
  }
 }
 return s1;
}

char *Strins(char *s1,char *s2,int pos)//字符串的插入
{
 int s1_length,s2_length;
 int i,j;
 pos--;
 s1_length=strlen(s1);
 s2_length=strlen(s2);
 for (i=s1_length;i>=pos;i--)//
将插入位置之后的所有字符往后移,以空出s2所需的字符长度
 {
  s1[i+s2_length]=s1[i];
 }
 for (j=pos;s2[j-pos]!='/0';j++)//
将字符串s2的内容填入所空出的字符串s1
 {
  s1[j]=s2[j-pos];  
 }
 return s1;
}

char *Strdel(char *s,int pos,int len)//字符串的删除
{
 int i;
 pos--;
 for (i=pos+len;s[i]!='/0';i++)//
pos开始删除字符串
 {
  s[i-len]=s[i];
 }
 s[i-len]='/0';
 return s;
}

void main()
{
 char string1[100];
 char string2[50];
 char string3[100];
 char string4[50];
 char string[50];
 char temp[5];
 int position1;
 int position2;
 int position3;
 int length;
 printf("/nPlease input original string:");
 gets(string1);
 printf("/nPlease input substitute string:");
 gets(string2);
 printf("/nPlease input substitute position:");
 scanf("%d",&position1); //
输入取代的起始位置(从1计数)
 gets(temp);//
此处的gets()用于接收前一输入行末尾的回车符
 Strrep(string1,string2,position1);
 printf("/nThe final string:%s/n",string1);

 printf("/nPlease input original string:");
 gets(string3);
 printf("/nInsertion string:");
 gets(string4);
 printf("/nInsertion position:");
 scanf("%d",&position2); //
输入插入字符串的起始位置(从1计数)
 gets(temp);//
此处的gets()用于接收前一输入行末尾的回车符
 Strins(string3,string4,position2);
 printf("/nThe final string:%s/n",string3);

 printf("/nPlease input original string:");
 gets(string);
 printf("/nPlease input delete position:");
 scanf("%d",&position3); //
输入欲删除的起始位置(从1计数)
 printf("/nPlease input delete length:");
 scanf("%d",&length); //
输入欲删除字符串的长度
 Strdel(string,position3,length);
 printf("/nThe final string:%s/n",string);
}

总结:gets()函数的连用问题:gets()用于输入一行字符串,中间可以有空格,以回车结束。上述函数中在scanf之后加了一个gets函数, 原因是:利用scanf函数从键盘接收一字符时,它只读入字符本身,而把字符后的回车符留在输入缓冲区内,该回车符被gets函数当作键入字符串的第一个字符读入,gets函数遇到回车符后就停止读入,因此string3为一空字符串.因此在前面再定义一个字符数组temp,然后在scanf 函数之后增加一条gets(temp)语句,以接收前一输入行末尾的回车符,保证下一行字符串输入的正确接收.

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值