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

原创 2007年10月15日 17:18:00

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)语句,以接收前一输入行末尾的回车符,保证下一行字符串输入的正确接收.

 

 

版权声明:本文为博主原创文章,转载请注明出处。

一个字符串替代函数strrep的实现

将字符串szSrc中找到的每一个szFind字符串替换为szRep  *主要思路:若无匹配字符串,返回原字符串。若有,新建一个指针指向关键字符串之后的字符串,截取关键字符串之前的字符串,与Repla...
  • lancerlian
  • lancerlian
  • 2015年01月19日 11:38
  • 484

Matlab 对字符串的处理

字符串实例:a='  a';b='b  b';c='cccc';m='' 1. 获取字符串长度 length(a)     2. 连接两个字符串,每个字符串最右边的空格被裁切 I...
  • DelSpooner
  • DelSpooner
  • 2015年12月06日 15:43
  • 3247

strrep函数c实现

  • 2012年03月21日 16:00
  • 2KB
  • 下载

c语言库函数【string.h】之 strrep_(char *src, char* oldStr, char * newStr)

c语言库函数【string.h】之 strrep_(char *src, char* oldStr, char * newStr)   代码如下:#include#include    char * ...
  • xnwyd
  • xnwyd
  • 2010年04月26日 21:35
  • 1875

直接获取某个组件的对象(this[]用法)

有这样一个需求:假如你new了一百次Button,同时这些button的id分别赋值如btn1.id = "button1"; btn2.id = "button2";以此类推。当100个bu...
  • sws9999
  • sws9999
  • 2011年04月09日 00:45
  • 429

C语言通用范例开发金典

  • 2009年12月17日 10:05
  • 4.45MB
  • 下载

String置换

public class strReplace {    public String replaceStr(String strOrient,String strRep){     if(strOri...
  • APOLLO_TS
  • APOLLO_TS
  • 2007年05月05日 22:33
  • 913

OLE程序开发利用(开发EXCEL)

OLE程序开发利用(开发EXCEL)一、首先打开类向导(MFC ClassWizard) 选择Add Class按钮中的 From a type library...找到 Office 目录下的文件 ...
  • keyou
  • keyou
  • 2001年11月02日 09:22
  • 800

C++的拷贝构造函数(深拷贝、浅拷贝)

在某些状况下,类内成员变量需要动态开辟堆内存,如果实行位拷贝,也就是把对象里的值完全复制给另一个对象,如A=B。这时,如果B中有一个成员变量指针已经申请了内存,那A中的那个成员变量也指向同一块内存。这...
  • woxiaozhi
  • woxiaozhi
  • 2011年08月11日 15:57
  • 396

SSD(Single Shot MultiBox Detector)不得不说的那些事

该方法出自2016年的一篇CVPR,SSD: Single Shot MultiBoxDetector,算是一个革命性的方法了,非常值得学习和研究。   作者github提供的是Linux 的版本,对...
  • qq_14845119
  • qq_14845119
  • 2016年11月25日 10:44
  • 15705
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:字符串基本处理函数(strrep,strins,strdel)
举报原因:
原因补充:

(最多只允许输入30个字)