1、strncpy字符串拷贝函数
//strncpy的程序
#include<stdio.h>
#include<assert.h>
char *strncpy1(char *strDest,const char *strSrc,int n)
{
assert((strDest!=NULL)&&(strSrc!=NULL)&&n>0);
if(strDest==strSrc)
return strDest;
char *Address=strDest;
while(n--&&(*strDest++=*strSrc++)!='\0')
//n--必须放在前面,退出循环哪一步检测到n=0时,后一个判断条件就不做了
;
*(strDest)='\0';
return Address;
} int main()
{
char strDest[]="tyua";
char strSrc[]="abcd";
char *pDest=strDest;
char *pSrc=strSrc;
strncpy1(pDest,pSrc,4);
printf("%s",pDest); }

2、右旋转字符串

//abcdef
#include<stdio.h>
#include<assert.h>
#include<string.h>
#include<malloc.h>
void ReverseString(char *str,int first,int last)
{
assert(str!=NULL&&first<=last);
int i=first,j=last;
while(i<j)
{
str[i]=str[i]+str[j];
str[j]=str[i]-str[j];
str[i]=str[i]-str[j];
i++; j--;
}
}
void RotateString(char *str,int n) //strcpy拷贝
{
assert(str!=NULL&&n>=0);
int len=strlen(str);
char *strTemp=(char *)malloc(10);//需要
strcpy(strTemp,str+len-n);
strcpy(strTemp+n,str);
strTemp[len]='\0';
strcpy(str,strTemp);
free(strTemp);
strTemp=NULL;
} void RotateString1(char *str,int n) //库函数拷贝
{
assert(str!=NULL&&n>=0);
int len=strlen(str);
char *temp=(char *)malloc(len+1);
memcpy(temp,str+len-n,n);
memcpy(temp+n,str,len-n);
memcpy(str,temp,len);
free(temp);
} void RotateString2(char *str,int n)//三次翻转
{
assert(str!=NULL&&n>0);
int len=strlen(str);
ReverseString(str,0,len-1);
ReverseString(str,0,n-1);
ReverseString(str,n,len-1); } int main()
{
char str[]="abcdef";
//RotateString(str,2);
RotateString2(str,2);
printf("%s\n",str);
}

3、string类的编写

#include<iostream>
#include<string.h>
using namespace std;
class MyString
{
public:
MyString(const char *str);
MyString(const MyString &other);
~MyString();
MyString & operator=(const MyString &stringA); void print()
{
cout<<m_str<<endl;
}
private:
char *m_str;
}; MyString::MyString(const char *str)
{
if(str==NULL)
{
m_str=new char [1];
m_str[0]='\0';
}
m_str=new char [strlen(str)+1];
strcpy(m_str,str);
}
MyString::MyString(const MyString &other)
{
int len=strlen(other.m_str);
m_str=(char*)malloc(len+1);
strcpy(m_str,other.m_str);
} MyString::~MyString()
{
delete [] m_str;
} MyString & MyString::operator=(const MyString &strA)
{
if(this==&strA)
return *this;
delete[] m_str;
int len=strlen(strA.m_str);
m_str=new char[len+1];
strcpy(m_str,strA.m_str);
return *this;
} void main()
{
char string1[]="abcd";
char string2[]="efgh";
MyString str1(string1);
str1.print();
MyString str2(string2);
str2=str1;
str2.print();
}

20140902 字符串拷贝函数 右旋转字符串 string类的编写的更多相关文章

  1. C语言——常用标准输入输出函数 scanf(), printf(), gets(), puts(), getchar(), putchar(); 字符串拷贝函数 strcpy(), strncpy(), strchr(), strstr()函数用法特点

    1 首先介绍几个常用到的转义符 (1)     换行符“\n”, ASCII值为10: (2)     回车符“\r”, ASCII值为13: (3)     水平制表符“\t”, ASCII值为 9 ...

  2. 编写实现字符串拷贝函数strcpy()完整版

    有个题目编程实现字符串拷贝函数strcpy(),很多人往往很快就写出下面这个代码. void strcpy( char *strDest,char *strSrc ) { while(( *strDe ...

  3. python字符串、字符串处理函数及字符串相关操作

    python字符串.字符串处理函数及字符串相关操作 字符串介绍 python字符串表示 Python除处理数字外还可以处理字符串,字符串用单撇号或双撇号包裹: >>> 'spam e ...

  4. JS字符串替换函数:Replace(“字符串1″, “字符串2″),

    JS字符串替换函数:Replace(“字符串1″, “字符串2″), 1.我们都知道JS中字符串替换函数是Replace(“字符串1″, “字符串2″),但是这个函数只能将第一次出现的字符串1替换掉, ...

  5. 字符串拷贝函数strcpy写法_转

    Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> ...

  6. 字符串处理总结之一(C#String类)

    C#(静态String类) C#中提供了比较全面的字符串处理方法,很多函数都进行了封装为我们的编程工作提供了很大的便利.System.String是最常用的字符串操作类,可以帮助开发者完成绝大部分的字 ...

  7. 字符串拷贝函数递归与非递归的C语言实现

    初学递归的时候,觉得很抽象,不好分析,确实如此,尤其是有些时候控制语句不对,导致程序进去无限次的调用,更严重的是栈溢出.既要正确的控制结束语句,又要有正确的进入下次递归的语句,还要有些操作语句.... ...

  8. 嵌入式-C语言基础:实现字符串拷贝函数

    自己实现一个字符串的拷贝函数 #include<stdio.h> #include<stdlib.h> #include <string.h> char * mys ...

  9. Java字符串的匹配问题,String类的matches方法与Matcher类的matches方法的使用比较,Matcher类的matches()、find()和lookingAt()方法的使用比较

    参考网上相关blog,对Java字符串的匹配问题进行了简单的比较和总结,主要对String类的matches方法与Matcher类的matches方法进行了比较. 对Matcher类的matches( ...

随机推荐

  1. Dubbo 系列(07-2)集群容错 - 服务路由

    目录 Dubbo 系列(07-2)集群容错 - 服务路由 1. 背景介绍 1.1 继承体系 1.2 SPI 2. 源码分析 2.1 创建路由规则 2.2 RouteChain 2.3 条件路由 Dub ...

  2. 用vim写go代码——vim-go插件

    GoImport:导入包 GoImport!:导入远程包 GoImportAs: 导入包并且重命名

  3. MySQL总结03

    MySQL表的引擎常用的有两种:MyISAM.InnoDB MyISAM引擎 MySQL5.5之前数据库默认的存储引擎都是MyISAM,MySQL5.5之后(包括5.5)用的是InnoDB. 每一个M ...

  4. 杯子(glass)

    题目描述 一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水.接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子.每次他选择两个当前含水量相同的瓶子,把一个瓶子的水全部倒 ...

  5. ArcGIS 面要素缝隙孔洞检查代码 C# GP

    public class PolygonGapChecker : CheckProgressMessageSender, IChecker, ICheckProgressChangeEvent { p ...

  6. JavaScript寻找最长的单词算法

    返回提供的句子中最长的单词的长度. 返回值应该是一个数字. 第一步,使用String.prototype.split()方法将字符串转换成数组 function findLongestWord(str ...

  7. 如何解决“ VMware Workstation 不可恢复错误: (vcpu-0) vcpu-0:VERIFY vmcore/vmm/main/cpuid.c:386 bugNr=1036521”

    第一次装虚拟机,装centos7遇到的坑: 1. 出现 “VMware Workstation 不可恢复错误: (vcpu-0) vcpu-0:VERIFY vmcore/vmm/main/cpuid ...

  8. go语言从例子开始之Example14.变参函数

    可变参数函数.可以用任意数量的参数调用.例如,fmt.Println 是一个常见的变参函数. Example: package main import "fmt" //...int ...

  9. Android Paint类介绍以及浮雕和阴影效果的设置(转)

    转自:https://blog.csdn.net/lpjishu/article/details/45558375 Paint类介绍 Paint即画笔,在绘制文本和图形用它来设置图形颜色, 样式等绘制 ...

  10. UNP学习 广播

    一.概述 虽然UDP支持各种形式的地址,但TCP只支持单播地址. 上图要点是: IPv4对多播的支持是可选的,而IPv6则时必须的. IPv6没有提供对广播的支持:当使用广播的IPv4应用程序一直到I ...