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. c# 读取和写入excel数据

    1. 读取 DataTable GetDataFromExcelByConn(bool hasTitle = false){    OpenFileDialog openFile = new Open ...

  2. 中介者模式(Mediator Pattern)

    用于减少多个对象或类之间的通信复杂性. 此模式提供了一个中介类,它通常处理不同类之间的所有通信,并支持通过松散耦合来维护代码.中介者模式属于行为模式类别. 实现实例 在这里通过一个聊天室的示例来演示中 ...

  3. leetcode.分治.241为运算表达式设计优先级-Java

    1. 具体题目 给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果.你需要给出所有可能的组合的结果.有效的运算符号包含 +, - 以及 * . 示例 1: 输入: & ...

  4. CSS 清除浮动的几种方法

    导读: CSS 的 Float(浮动),会使元素向左或向右移动,其周围的元素也会重新排列,Float(浮动),往往是用于图像,使得文字围绕图片的效果,而它在布局时一样非常有用.不过有利也有弊,使用浮动 ...

  5. 50.Maximal Square(最大正方形)

    Level   Medium 题目描述: Given a 2D binary matrix filled with 0's and 1's, find the largest square conta ...

  6. Python之数字的格式化输出

    需求: 将数字格式化后输出,并控制数字的位数.对齐.千位分隔符和其他的细节 x = 1234.56789 # Two decimal places of accuracy print(format(x ...

  7. Ubuntu 16.04 修改状态栏位置

    修改状态栏位置: gsettings set com.canonical.Unity.Launcher launcher-position Bottom #底部(苹果风格) gsettings set ...

  8. 关于Django路由层简单笔记

    Django—路由层 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来的某个U ...

  9. 浅谈Java反射与框架

    Java反射 1.示例 1.用户类 package com.lf.entity; import com.lf.annotation.SetProperty; import com.lf.annotat ...

  10. JavaSE---多线程---概述

    1.概述 1.1 进程: 系统进行资源分配.调度的一个独立单元: 进程的特征: 1.1.1 独立性: 系统中独立存在的实体,拥有自己独立的资源: 每个进程都拥有自己私有的地址空间,在没有经过进程本身允 ...