常见字符串+内存函数的介绍—C语言

一、前言:

1、求字符串长度:

1.1-strlen

2、长度不受限制的字符串函数:

1.2-strcpy

1.3-strcat

1.4-strcmp

3、长度受限制的字符串函数:

1.5-strncpy

1.6-strncat

1.7-strncmp

4、字符串查找:

1.8-strstr

1.9-strtok

5、错误信息报告:

1.10-strerror

6、内存操作函数:

1.11-memcpy

1.12-memmove

1.13-memset

1.14-memcmp

二、字符串介绍:

1.1-strlen:

size_t strlen ( const char * str );

 功能:

        该函数的功能是得到一个字符串的长度。

性质:

        1.字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数    (不包含 '\0' )。
        2.参数指向的字符串必须要以 '\0' 结束。
        3.注意函数的返回值为size_t,是无符号的( 易错 )

代码及效果如图所示:

1.2-strcpy:

char* strcpy(char * str1, const char * str2 );

功能:  

      该函数为字符串拷贝函数,功能是将字符串str2中元素拷贝到字符串str1中。

性质:

        1.字符串str2必须以 '\0' 结束。
        2.会将字符串str2中的 '\0' 拷贝到目标空间。
        3.目标空间str1必须足够大,以确保能存放字符串str2。
        4.目标空间str1必须可变。

代码及效果如图所示:

1.3-strcat:

char * strcat ( char * str1, const char * str2 );

功能:

        该函数实现的功能是将str2的内容追加到str1后。

性质:

        1.字符串str2必须以 '\0' 结束。
        2.目标空间str1必须有足够的大,能容纳下字符串str2的内容。
        3.目标空间str1必须可修改。

代码及效果如图所示:

1.4-strcmp:

int strcmp ( const char * str1, const char * str2 );

功能:

        用于比较字符串的大小,这里比较的是字符串第一个字符的ASCLL码值的大小,若相同则比较下一个字符。

性质:

标准规定:
第一个字符串大于第二个字符串,则返回大于0的数字
第一个字符串等于第二个字符串,则返回0
第一个字符串小于第二个字符串,则返回小于0的数字

代码及效果如图所示:

1.5-strncpy:

char * strncpy ( char * str1, const char * str2, size_t num );

功能:

        将str2中num个元素个数拷贝到str1上。

性质:

        1.拷贝num个字符从字符串str2到目标空间str1。
        2.如果字符串str2的长度小于num,则拷贝完字符串str2之后,在目标的后边追加0,直到num个。

代码及效果如图所示:

1.6-strncat :

char * strncat ( char * str1, const char * str2, size_t num );

功能:

  将字符串str2中的num个元素追加到str1后。

性质:

        1.字符串str2必须以 '\0' 结束。
        2.目标空间str1必须有足够的大,能容纳下字符串str2的内容。
        3.目标空间str1必须可修改。

代码及效果如图所示:

1.7-strncmp:

int strncmp ( const char * str1, const char * str2, size_t num );

功能:

  比较str1和str2中num个字符的大小,这里比较的是字符串第一个字符的ASCLL码值的大小,若相同则比较下一个字符。。

性质:

标准规定:
第一个字符串大于第二个字符串,则返回大于0的数字
第一个字符串等于第二个字符串,则返回0
第一个字符串小于第二个字符串,则返回小于0的数字

代码及效果如图所示:

1.8-strstr

char * strstr ( const char *str1, const char * str2);

功能:

        strstr() 函数搜索字符串str2在字符串str1中的第一次出现的位置。找到所搜索的字符串,则该函数返回第一次匹配的字符串的地址,如果未找到所搜索的字符串,则返回NULL。        

代码及效果如图所示:

1.9-strtok:

char * strtok ( char * str, const char * sep );

 

功能:

  通过分隔符来分隔字符串。

性质:

        1.sep参数是个字符串,定义了用作分隔符的字符集合
        2.第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标
记。
        3.strtok函数找到str中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针(注: strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容
并且可修改。)
        4.strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串中的位置。
        5.strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标记。
        6.如果字符串中不存在更多的标记,则返回 NULL 指针。

代码及效果如图所示:

1.10-strerror

char * strerror ( int errnum );

功能:

  返回错误码,所对应的错误信息。

代码及效果如图所示:

1.11-memcpy:

void * memcpy ( void * str1, const void * str2, size_t num );

功能: 

        函数memcpy从str2的位置开始向后复制num个字节的数据到str1的内存位置。

性质:

        1.函数memcpy从str2的位置开始向后复制num个字节的数据到str1的内存位置。
        2.这个函数在遇到 '\0' 的时候并不会停下来。
        3.如果str2和str1有任何的重叠,复制的结果都是未定义的。        

代码及效果如图所示:

注:这里整型为4个字节num为12时拷贝到str1的数量为三个元素

1.12-memmove:

void * memmove ( void * str1, const void * str2, size_t num );

功能: 

        函数memmove从str2的位置开始向后复制num个字节的数据到str1的内存位置。

性质:

        1.和memcpy的差别就是memmove函数处理的str2内存块和str1内存块是可以重叠的。
        2.如果str2空间和str1空间出现重叠,就得使用memmove函数处理。
 

代码及效果如图所示:

1.13-memset:

void *memset( void *str, int c, size_t num);

功能: 

        复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 num 个字符。

性质:

        1.int c为ASCLL码值 。
        2. str为可变空间。       

代码及效果如图所示:

1.14-memcmp:

int memcmp ( const void * str1, const void * str2, size_t num );

功能: 

        比较从str1和str2指针开始的num个字节

性质:

标准规定:
str1大于str2,则返回大于0的数字
str1等于str2,则返回0
str1小于str2,则返回小于0的数字

代码及效果如图所示:

结语:

        上述内容,即是我个人对常见字符串+内存函数的个人见解。若有大佬发现哪里有问题可以私信或评论指教一下我这个小萌新。非常感谢各位友友们的点赞,关注,收藏与支持,我会更加努力的学习编程语言,还望各位多多关照,让我们一起进步吧!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值