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. 监控工具 zxbbix

    报错 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server throug ...

  2. 计算两个日期之间相差的天数(带带负数) 支持格式YYYY-mm-dd和YYYY-mm-dd HH:mm:ss

    /** * 计算两个日期之间相差的天数(带带负数) 支持格式YYYY-mm-dd比较 * @param higDate 减数 * @param lowDate 被减数 * @returns 差值天数 ...

  3. CTU Open 2018 Lighting /// 组合数递推 二进制

    题目大意: 给定n k 给定一个数的二进制位a[] 求这个数加上 另一个二进制位<=n的数b 后 能得到多少个不同的 二进制位有k个1 的数 样例 input10 51000100111 out ...

  4. springboot 项目启动脚本

    springboot项目启动可通过下面的shell脚本启动. startup.sh app=order-service-rest.jar appout=logs/${app/.jar/.out} ap ...

  5. kubernetes集群的安装异常汇---docker的驱动引擎

    异常[kubelet cgroup driver:cgroupfs跟docker cgroup driver:systemd不一致] 异常描述 error: failed to run Kubelet ...

  6. vue侦听属性和计算属性

    监听movies,实现点击添加显示到li标签里面.页面效果如下: <template> <div> <div class="moive"> &l ...

  7. go中整型的用法小结

    示例 // 整型的用法小结 // 注意: // 整型变量在使用时,遵循保小不保大的原则 // 尽量使用占用空间小的数据类型 package main import ( "fmt" ...

  8. WPF多线程更新UI的一个解决途径

    那么该如何解决这一问题呢?通常的做法是把耗时的函数放在线程池执行,然后切回主线程更新UI显示.前面的updateTime函数改写如下: private async void updateTime()  ...

  9. iOS 点击按钮截屏

    @interface CaptureViewController () @property (nonatomic, strong) UIImageView *backgrounView; //控制器背 ...

  10. 后台执行循环(done &)