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

 

 

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/birdzb/article/details/1826094

ASP.NET之‘字符串’

-
  • 1970年01月01日 08:00

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:00
  • 1976

strrep函数c实现

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

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

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

c++在字符中删除指定字符串

#include #include #include using namespace std; void strdel(char *str,const char* pattern) { i...
  • yinhua405
  • yinhua405
  • 2017-06-18 10:00:10
  • 754

c++(字符串处理函数)

strcpy(char destination[], const char source[]);strcpy:将字符串source拷贝到字符串destination中。strcpy函数应用举例原型:s...
  • zhaobmox
  • zhaobmox
  • 2006-11-30 16:55:00
  • 1516

请编写一个函数,删除一个字符串的一部分。

请编写一个函数,删除一个字符串的一部分,函数的原型如下:intdel_substr(char *str,char const *substr) 函数首先应该判断substr是否出现在str中,如果它并...
  • raiven2008
  • raiven2008
  • 2014-12-31 14:50:41
  • 1601

C语言——字符串里删除字符函数

前言:对于一个刚接触C语言的人来说,写个简单的字符串操作函数简直是要了我的命,刚开始看网上的大神写的代码的时候觉得很简单,自己想了一会之后觉得自己动手写肯定是没问题,可是当我自己写的时候(在不看他们代...
  • halikuiyin
  • halikuiyin
  • 2017-08-31 15:14:37
  • 305

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

Strrep()是将字符串中的某一子字符串用另一个子字符串的内容来替换。 此法并不会改变字符串的长度,若替换的子字符串较原子字符串长,则会覆盖掉原字符串中的内容。Strins()是将欲插入的字符串插入...
  • birdzb
  • birdzb
  • 2007-10-15 17:18:00
  • 6855

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

有这样一个需求:假如你new了一百次Button,同时这些button的id分别赋值如btn1.id = "button1"; btn2.id = "button2";以此类推。当100个bu...
  • sws9999
  • sws9999
  • 2011-04-09 00:45:00
  • 446
收藏助手
不良信息举报
您举报文章:字符串基本处理函数(strrep,strins,strdel)
举报原因:
原因补充:

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