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. python 波波版压缩软件

    #压缩软件 import os import zipfile import tkinter import tkinter.filedialog import tkinter.messagebox '' ...

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

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

  3. 删除文件时提示“找不到该项目”,怎么解决? 转摘自:http://jingyan.baidu.com/article/e4d08ffdf5ab470fd2f60df4.html

    故障现象:在使用Windows系统删除文件或者文件夹的时候,有时会出现“找不到该项目”的错误提示,可能再次“重试”也无济于事. 那么,接下来T库小编就为库友们简单概括一下出现该问题的原因. 故障原因: ...

  4. React-Native基础-安卓篇(二)

    前言:这一篇随笔将记录我在React-Native官网文档上学习的基础知识

  5. aiohttp上报:Got more than 8190 bytes (10160) when reading Status line is too long.错误的解决办法

    通过浏览器向web服务传递base64码的图片时遇到参数过长的问题? 解决办法:查看aiohttp的源码:aiohttp/http_parser.py下找到: class HeadersParser: ...

  6. Tkinter初体验

    一.基本步骤 1.导入Tkinter模块 2.创建根窗口 3.填充组件 4.组件关联逻辑 5.进入主循环 二.Code #coding:utf-8 ''' 网关流量校验器 @author: Hongz ...

  7. 力扣—Remove Nth Node From End of List(删除链表的倒数第N个节点) python实现

    题目描述: 中文: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二 ...

  8. C# string.Format json格式字符串报错”输入字符串的格式不正确“

    当我们在string.Format中传入Json字符串时,会报”输入字符串的格式不正确“,这是因为json的"{"符号的问题,最开始我是想着用转义一下"{",但 ...

  9. oracle client 卸载

    1.停用oracle服务:进入计算机管理,在服务中,找到oracle开头的所有服务,右击选择停止 2.在开始菜单中,找到Universal Installer,运行Oracle Universal I ...

  10. Mongo 备份

    1. Windows下远程连接服务器上的MongoDB数据库 使用的是mongo命令,如果安装mongodb时配置了环境变量,可以直接快捷键windows+R打开cmd. Cmd  --- mongo ...