<String.h>  总结:

常用的函数:

 

一、memchr:

说明:当第一次遇到字符ch时停止查找。如果成功,返回指向字符ch的指针;否则返回NULL。

代码:

#include <stdio.h>

 

void *memchr(const void*s, int c, size_t n){

    const unsigned char uc = c;

    const unsigned char *su;

 

    < n; ++su, --n)

        if(*su == uc)

            return ((void *)su);

    return (NULL);

}

 

int main(int argc, char const *argv[])

{

    char*s ="I am Levi !";

    char *p;

    p );

    if(p) printf("%s\n", p);

    else printf("Not Found!\n");

    ;

}

 

// find first occurrence if c in s[n].


 

二、memcmp:

说明:比较内存区域buf1和buf2的前count个字节

代码:

#include <stdio.h>

 

int memcmp(const void *s1, const void *s2, size_t n){

    const unsigned char *su1, *su2;

    < n; ++su1, ++su2, --n)

        if(*su1 != *su2)

            return ((*su1 < *su2) ? -1 : +1);

    ;

}

 

int main(int argc, char const *argv[])

{

    char*s1 ="Cello kitty1";

    char*s2 ="Dello kitty";

    int r;

    r );

    if(!r) printf("s1 and s2 are identical\n");

    ) printf("s1 less than s2\n");

    else printf("s1 greater than s2\n");

    ;

}

 

//compare unsigned char (s1[n] and s2[n]).


三、memcpy

说明:由src所指内存区域复制count个字节到dest所指内存区域

代码:

#include <stdio.h>

 

void *memcpy(void *s1, const void *s2, size_t n){

    char *su1;

    const char *su2;

    < n; ++su1, ++su2, --n)

        *su1 = *su2;

    return (s1);

}

 

int main(int argc, char const *argv[])

{

    char*s ="Hello Levi";

    ];

    memcpy(d, s, );

    printf("%s\n", d);

    puts(d);

    ;

}

 

/* copy char s2[n] to s1[n] in any order */


四、memmove

说明:

1、由src所指内存区域复制count个字节到dest所指内存区域。

2、src和dest所指内存区域可以重叠,但复制后src内容会被更改。函数返回指向dest的指针。

代码:

 

 

#include <stdio.h>

void *memmove(void *s1, const void *s2, size_t n){

    char *sc1;

    const char *sc2;

    sc1 = s1;

    sc2 = s2;

    if(sc2 > sc1 && sc1 < sc2 + n)

        < n; --n)

            *--sc1 = *--sc2;

    else 

        < n; --n)

            *sc1++ = *sc2++;

    return (s1);

}

 

int main(int argc, char const *argv[])

{

    char s[] ="wushirenfei shitaiyanliang";

    memmove(s, s);

    printf("%s\n", s);

    ;

}

 

/* copy char s2[n] to s1[n] safely */


五、memset

说明:

1、把buffer所指内存区域的前count个字节设置成字符c。

2、返回指向buffer的指针。

代码:

#include <stdio.h>

 

void *memset(void *s, int c, size_t n){

    const unsigned char uc = c;

    unsigned char *su;

 

    < n; ++su, --n)

        *su = uc;

    return (s);

}

 

int main(int argc, char const *argv[])

{

] ="Bu xiang yan hua lu shang xing";

    memset(s);

    printf("%s\n", s);

    ;

}

 

 

六、strncat、strcat

说明:

1、strcat 把src所指字符串添加到dest结尾处并添加'\0'。

2、src、dest 不可以重叠

代码:

 

#include <stdio.h>

 

char *strncat(char *s1, const char *s2, size_t n){

    char *s;

    for(s = s1; *s != '\0'; ++s)

        ;

    < n && *s2 != '\0'; --n)

        *s++ = *s2++;

    *s = '\0';

    return (s1);

}

 

char *strcat(char *s1, const char *s2){

    char *s;

    for(s = s1; *s != '\0'; ++s)

        ;

    for(; (*s = *s2) != '\0'; ++s, ++s2)

        ;

    return s1;

}

 

 

int main()

{

]="Golden Global";

    char *s=" View WinIDE Library";

 

    strcat(d,s);

    printf("%s\n",d);

    ;

}

 

七、strcpy、strncpy

说明:

1、把src所指由NULL结束的字符串复制到dest所指的数组中

2、src和dest所指内存区域不可以重叠

代码:

#include <stdio.h>

 

char *strcpy(char *s1, const char *s2){

    char *s;

    for(s = s1; (*s++ = *s2++) != '\0'; )

        ;

    return (s1);

}

 

char *strncpy(char *s1, const char *s2, size_t n){

    char *s;

    < n && *s2 != '\0'; --n)

        *s++ = *s2++;

    < n; --n)

        *s++ = '\0';

    return s1;

}

 

int main(int argc, char const *argv[])

{

    char*s ="Levi is Hacker";

    ];

    strcpy(d, s);

    printf("%s\n", d);

    ;

}

 

八、strcmp、strncmp

说明:

1、比较字符串s1和s2

2、如何比较,看代码吧

代码:

#include <stdio.h>

 

int strncmp(const char *s1, const char *s2, size_t n){

    < n; ++s1, ++s2, --n)

        if(*s1 != *s2)

            return((*(unsigned char *)s1 < *(unsigned char *)s2) ? -1 : +1);

        else if(*s1 == '\0')

            ;

    ;

}

 

int strcmp(const char *s1, const char *s2){

    for(; *s1 == *s2; ++s1, ++s2)

        if(*s1 == '\0')

            ;

    return ((*(unsigned char *)s1 < *(unsigned char *)s2) ? -1 : +1);

}

 

 

int main(int argc, char const *argv[])

{

    char *s1="Ze";

    char *s2="Hel";

    int r;

    r = strcmp(s1, s2);

    if(!r)

        printf("s1 and s2 are identical\n");

    else

    if(r<0)

        printf("s1 less than s2\n");

    else

        printf("s1 greater than s2\n");

    ;

}

 

九、strlen

说明:返回字符串长度

代码:

#include <stdio.h>

 

size_t strlen(const char*s){

    const char *sc;

    for(sc = s; *sc != '\0'; ++sc)

        ;

    return sc - s;

}

 

int main(int argc, char const *argv[])

{

    int n;

    char *s ="Hello Levi";

    n = strlen(s);

    printf("%d\n", n);

    ;

}

 

十、strchr

说明:

1、查找s中首次出现字符c位置

2、返回指针,指向c出现位置,否则返回NULL

代码:

#include <stdio.h>

 

char *strchr(const char *s, int c){

    const char ch = c;

    for(; *s != ch; ++s)

        if(*s == '\0')

            return NULL;

    return (char *)s;

}

 

int main(int argc, char const *argv[])

{

    char *s = "Golden Global View";

    char *p;

    p = strchr(s,'i');

    if(p)

        printf("%s\n", p);

    else

        printf("Not Found!\n");

    ;

}

 

十一、strcspn

说明:

1、在字符串s1中搜索s2出现的字符。

2、返回找到字符的下标值

代码:

#include <stdio.h>

 

size_t strcspn(const char *s1, const char *s2){

    const char *sc1, *sc2;

    for(sc1 = s1; *sc1 != '\0'; ++sc1)

        for(sc2 = s2; *sc2 != '\0'; ++sc2)

            if(*sc1 == *sc2)

                return (sc1 - s1);

    return (sc1 - s1);

}

 

int main(int argc, char const *argv[])

{

    char *s="Golden Global View";

    char *r="L";

    int n = strcspn(s,r);

    printf("%d\n", n);

 

    ;

}

 

十二、strrchr

说明:

1、在字符串搜索c字符

2、返回指针,指向搜索c字符最后出现的字符下标

代码:

#include <stdio.h>

 

char *strrchr(const char *s, int c){

    const char ch = c;

    const char *sc;

    for(sc = NULL; ; ++s){

        if(*s == ch)

            sc = s;

        if(*s == '\0')

            return ((char *)sc);

    }

}

 

 

int main(int argc, char const *argv[])

{

    char *s = "Hello LLLLevi";

    char *p = strrchr(s, 'L');

    printf("%s\n", p);

    ;

}

 

十三、strstr

说明:

1、返回父串完全匹配子串的指针

2、返回的指针指向完全匹配子串的position

代码:

#include <stdio.h>

 

char *strchr(const char *s, int c){

    const char ch = c;

    for(; *s != ch; ++s)

        if(*s == '\0')

            return NULL;

    return (char *)s;

}

 

char *strstr(const char *s1, const char *s2){

    if(*s2 == '\0')

        return ((char *)s1);

    for(; (s1 = strchr(s1, *s2)) != NULL; ++s1){

        const char *sc1, *sc2;

        for(sc1 = s1, sc2 = s2; ; )

            if(*++sc2 == '\0')

                return ((char *)s1);

            else if(*++sc1 != *sc2)

                break;

    }

    return NULL;

}

 

int main(int argc, char const *argv[])

{

    char *s = "ccdd View";

    char *l = "dd";

    char *p;

    p=strstr(s,l);

    if(p)

        printf("%s\n", p);

    else

        printf("Not Found!");

    ;

}

 

Ps:深圳冬天还有蚊子,擦擦,蚊子太多了,不写了,回宿舍睡觉觉~~

“String.h” 源代码总结的更多相关文章

  1. C string.h 常用函数

    参考:http://womendu.iteye.com/blog/1218155 http://blog.csdn.net/zccst/article/details/4294565 还有一些,忘记了 ...

  2. 字符串操作函数<string.h>相关函数strcpy,strcat,等源码。

    首先说一下源码到底在哪里找. 我们在文件中包含<cstring>时,如果点击右键打开文档, 会打开cstring,我们会发现路径为: D:\Program Files\visual stu ...

  3. linux下错误的捕获:errno(errno.h)和strerror(string.h)的使用

    参考:http://blog.csdn.net/starstar1992/article/details/52756387 linux下错误的捕获:errno和strerror的使用 经常在调用lin ...

  4. 《C标准库》——之<string.h>

    <string.h>里的字符串操作函数是经常要用到的,因此阅读了源码后自己实现了一些: 拷贝函数 void * Mymemcpy(void * sDst, const void * sSr ...

  5. <string> 与<string.h>、<cstring>的区别

    <string.h> <string.h>是C版本的头文件,包含比如strcpy.strcat之类的字符串处理函数. <cstring> 在C++标准化(1998年 ...

  6. 头文件 string.h cstring string 区别

    1.#include <cstring>   //不可以定义string s:可以用到strcpy等函数using   namespace   std; #include <stri ...

  7. C标准库<string.h>实现

    本文地址:http://www.cnblogs.com/archimedes/p/c-library-string.html,转载请注明源地址. 1.背景知识 <string.h>中声明的 ...

  8. C/C++关于string.h头文件和string类

    学习C语言时,用字符串的函数例如stpcpy().strcat().strcmp()等,要包含头文件string.h 学习C++后,C++有字符串的标准类string,string类也有很多方法,用s ...

  9. string.h文件中函数用法

    下面为string.h文件中函数的详细用法: strcpy函数名:strcpy功 能: 拷贝一个字符串到另一个用 法: char *strcpy(char *destin, char *source) ...

随机推荐

  1. 解决 TortoiseGit 诡异的 Bad file number 问题(转)

    问题描述 昨天,以及今天(2014-11-29),使用 TortoiseGit 时碰到了一个诡异的问题. 卸载,清理注册表,重装,重启,各种折腾以后,还是不能解决. 但是23.45分一过,突然灵光一闪 ...

  2. quick-cocos2d-x游戏开发【6】——制作您自己的自定义效果button菜单

    前面提到的主菜单使用,还是很easy的,但我们在商业产品.经常看到button他们人很好,照片不仅就好了,和动画也很不错.Candy Crash都玩过吧,他们看到,button.真的像果冻,效果确实非 ...

  3. ArcGIS JavaScript API本地部署离线开发环境[转]

    原文地址:http://www.cnblogs.com/brawei/archive/2012/12/28/2837660.html 1 获取ArcGIS JavaScript API API的下载地 ...

  4. ocp11g培训内部教材_053课堂笔记(043)_数据备份

    053:数据库高级管理: 目录 第一部分:数据库备份与恢复... 4 第一章:备份恢复概述... 4 1.1 备份的意义: 4 1.2 数据库故障的类型:... 4 1.3 制定你的备份和恢复的计划. ...

  5. 基于 Android 的 3D 视频样本代码

    作者:Mark Liu 下载样本代码 简单介绍 在Android 中,创建一个可以播放视频剪辑的应用很easy:创建一个採用 3D 图形平面的游戏应用也很easy.可是,创建一个可以在 3D 图形对象 ...

  6. hibernate tools连接数据报错

    报如下的错误: An internal error occurred during: "Fetching children of Database". org.slf4j.spi. ...

  7. 从头开始学JavaScript (七)——函数

    原文:从头开始学JavaScript (七)--函数 一.return 函数在执行完return之后停止并立即退出. return返回值:与return: 如下两个例子: function sum(n ...

  8. php_ThinkPHP的RBAC(基于角色权限控制)详解

    一.什么是RBAC 基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注. 在RBAC中,权限与角色相关联,用户通 ...

  9. Log4j2 简明教程

    一.概述 log4j2官方文档内容非常多,要一次性了解全部是不可能的.正确的步骤应当是先了解最常见的配置,当发现原有知识无法解决问题,再重新查看文档看有没有合适的配置.下面将从文件结构入手,再到简单的 ...

  10. ShellExecuteEx的使用方法

    关于怎样在c++中启动外部的exe程序,之前看到在百度一搜就看到了: ShellExecute(this->m_hWnd,"open","calc.exe" ...