字符串函数(strcpy字符串拷,strcmp字符串比较,strstr字符串查找,strDelChar字符串删除字符,strrev字符串反序,memmove拷贝内存块,strlen字符串长度)

1.strcpy字符串拷贝
拷贝pStrSource到pStrDest,并返回pStrDest地址(源和目标位置重叠情况除外)

char *strcpy(char *pStrDest, const char *pStrSource)
{
    assert(NULL!=pStrDest && NULL!=pStrSource);
    char *strTemp=pStrDest;
    while ((*pStrDest++ = *pStrSource++) != ‘\0‘);

    return strTemp;
}

2.strcmp字符串比较

int strcmp(const char *pStrA, const char *pStrB)
{
    assert(NULL!=pStrA && NULL!=pStrB);
    while (*pStrA && *pStrB && *pStrA==*pStrB)
    {
        ++pStrA;
        ++pStrB;
    }

    return (pStrA-*pStrB);
}

3.strstr字符串查找

char *strstr(const char *pStrSource, const char *pStrSearch)
{
    assert(pStrSource != NULL && pStrSearch != NULL);
    const char *strTempSource = pStrSource;
    const char *strTempSearch = pStrSearch;
    for (; *pStrSource!=‘\0‘; ++pStrSource)
    {
        for (strTempSource=pStrSource,strTempSearch=pStrSearch;
        *strTempSearch!=‘\0‘ && *strTempSearch==*strTempSource;
        ++strTempSource, ++strTempSearch);

        if (*strTempSearch == ‘\0‘)
        {
            return (char *)pStrSource;
        }
    }

    return (char *)NULL;
} 

4.strDelChar字符串删除字符

char *strDelChar(char *pStrSource, const char chDel)
{
    assert(NULL!=pStrSource && !isspace(chDel));
    char *pTempStrA, *pTempStrB;
    pTempStrA = pTempStrB = pStrSource;

    while (*pTempStrB++)
    {
        if (*pTempStrB != chDel)
        {
            *pTempStrA++ = *pTempStrB;
        }
    }
    *pTempStrA = ‘\0‘;

    return pStrSource;
}

5.strrev字符串反序

char *strrev(char *pStrSource)
{
    assert (NULL != pStrSource);

    char *pStrStart, *pStrEnd;
    pStrStart = pStrEnd = pStrSource;
    while (*pStrEnd != ‘\0‘)
    {
        ++pStrEnd;
    }

    char chTemp;
    for (--pStrEnd, pStrStart; pStrEnd<pStrStart; ++pStrStart, --pStrEnd)
    {
        chTemp = *pStrStart;
        *pStrStart = *pStrEnd;
        *pStrEnd = chTemp;
    }

    return pStrSource;
}

6.memmove拷贝内存块

void *memmove(void *pStrTo, const void *pStrFrom, size_t count)
{
    assert (NULL!=pStrTo && NULL!=pStrFrom);

    void *pStrRet = pStrTo;

    if (pStrTo<pStrFrom || pStrTo>pStrFrom+count-1)
    {
        //内存块不重叠情况
        while (count--)
        {
            *pStrTo++ = *pStrFrom++;
        }
    }
    else
    {
        //内存块重叠情况
        char *pStrDest = (char *)pStrTo;
        char *pStrSource = (char *)pStrFrom;
        pStrDest = pStrDest+count-1;
        pStrSource = pStrSource+count-1;
        while (count--)
        {
            *pStrDest-- = *pStrSource--;
        }
    }

    return pStrRet;
}

7.strlen字符串长度

int strlen(const char *pStrSource)
{
    assert(NULL != pStrSource);
    int iLen = 0;
    while (*pStrSource++ != ‘\0‘)
    {
        ++iLen;
    }

    return iLen;
}

http://www.cnblogs.com/sz-leez/p/4531507.html

原文地址:https://www.cnblogs.com/findumars/p/8824143.html

时间: 2024-11-10 14:53:20

字符串函数(strcpy字符串拷,strcmp字符串比较,strstr字符串查找,strDelChar字符串删除字符,strrev字符串反序,memmove拷贝内存块,strlen字符串长度)的相关文章

字符串函数---strcpy()与strncpy()详解及实现

一.strcpy()与strncpy() strcpy():strcpy(dest,src);    strcpy把src所指向以'\0'结尾的字符串复制到dest所指的数组中,返回指向dest的指针. 当sizeof(dest)>=sizeof(src)时,拷贝正确,并在dest字符串后面加入'\0'; 当sizeof(dest)<sizeof(src)时,拷贝出错. strncpy():strncpy(dest,src,n);    strncpy把src所指向以'\0'结尾的字符串的前n

【Linux C中文函数手册】之 内存和字符串函数

内存和字符串函数 1) bcmp 比较内存内容 相关函数 bcmp,strcasecmp,strcmp,strcoll,strncmp,strncasecmp表头文件 #include<string.h>定义函数 int bcmp ( const void *s1,const void * s2,int n);函数说明 bcmp()用来比较s1和s2所指的内存区间前n个字节,若参数n为0,则返回0.返回值 若参数s1 和s2 所指的内存内容都完全相同则返回0 值,否则返回非零值.附加说明 建议

十二、字符串(2)——字符串函数

1.单字符输入输出,用 putchar 和 getchar int putchar(int c); //向标准输出写一个字符 //返回写了几个字符,EOF(-1)表示写失败 int getchar(void); //从标准输入读入一个字符 //返回类型是int是为了返回EOF(-1); //Windows --> Ctrl-Z //Unix --> Ctrl-D 标准库中的字符函数 #include<string.h> strlen.strcmp.strcpy.strcat.str

php 字符串函数详解

函数 描述 PHP addcslashes() 在指定的字符前添加反斜杠. 4 addslashes() 在指定的预定义字符前添加反斜杠. 3 bin2hex() 把 ASCII 字符的字符串转换为十六进制值. 3 chop() rtrim() 的别名. 3 chr() 从指定的 ASCII 值返回字符. 3 chunk_split() 把字符串分割为一连串更小的部分. 3 convert_cyr_string() 把字符由一种 Cyrillic 字符转换成另一种. 3 convert_uude

c#编程基础之字符串函数

c#常用的字符串函数 例一: 获取字符串的大小写函数 ToLower():得到字符串的小写形式 ToUpper():得到字符串的大写形式 注意: 字符串时不可变的,所以这些函数都不会直接改变字符串的内容,而是把修改后的字符串通过函数返回值的形式返回. 源码如下: using System; using System.Collections.Generic; using System.Text; namespace 字符串函数学习 { class Program { static void Mai

转:C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文

转自:C语言字符串操作函数 - strcpy.strcmp.strcat.反转.回文 作者:jcsu C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. 字符串转化为整数 - atoi4. 字符串求长 - strlen5. 字符串连接 - strcat6. 字符串比较 - strcmp7. 计算字符串中的元音字符个数8. 判断一个字符串是否是回文1. 写一个函数实现字符串反转 版本1 - while版 void strRev(char *s){    

各种字符串函数(strcpy,strcmp,strlen)之深度剖析

//字符串复制函数1 void strcpy1(char str1[], char str2[]){ int i = 0; for (; str2[i] != '\0'; i++){ str1[i] = str2[i]; } str1[i] = '\0'; } //2 void strcpy2(char str1[], char str2[]){ int i = 0; while (str1[i] = str2[i])i++; } //字符串长度函数1 int strlen1(char str[

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

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->// CppReference.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" using namespace std; /* * 说明:字符串拷贝版本1 * 参数:dest目标地址,src源地址 * 返回:返回拷贝好的地址:如果出错或者有重叠,无

虚怀若谷 字符串拷贝函数strcpy写法_转

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->// CppReference.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" using namespace std; /* * 说明:字符串拷贝版本1 * 参数:dest目标地址,src源地址 * 返回:返回拷贝好的地址:如果出错或者有重叠,无