栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

字符串函数和内存函数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

字符串函数和内存函数

库函数:别人写好的函数,让我们去用。

字符串函数

1.strlen

c语言中需要包含头文件#include            c++中#include

格式:size_t strlen ( const char* str )

1.解释一下:

const char*: const char*  /  char const* 都禁止指针指向内容发生改变,也就是*str='0';char* const 禁止指针变量本身改变,也就是str="abcd";

函数意义是求字符串长度,求长度当然不应该修改字符串内容

size_t:是一个typedef出来的类型别名,通常情况下,size_t是unsigned long。

2.对参数进行检查:

a.使用if 

 if ( str = NULL ){
     return 0; }

b.使用断言

#include

assert(str != NULL);

如果断言的条件为假,程序直接崩溃,并给出相关提示信息。如果传入野指针c语言目前无解。


2.strcpy (字符串拷贝)

格式:char* strcpy(char* destination,const char* source)

把source里的数据拷贝到destination中

之所以要返回一个char*,目的是为了能够进行链式访问。

a.拷贝的时候会把 也一起拷贝过去。

b.要求destination对应的内存空间足够大,能容纳下src指向的字符串(包括 ),如果空间不够则会越界成为未定义行为。


3.strcat(字符串拼接)

针对大部分的编程语言来说,字符串的拼接用 + ,但c语言要用strcat。

同样,dest对应的内存空间得足够大,能容纳下最终的拼接结果。


4.strcmp(字符串比较)

比较两个字符串的大小/相等

比较规则是“字典序”

str1 和 str2

str1 < str2  ,返回一个 <0的整数

str1 > str2  ,返回一个 >0的整数

str1 = str2  ,返回0


5.strncmp、strncat、strncpy 

n是在限定 读取/拷贝 字符的个数

strncpy和strncat多加了一层限制,通过n限制最大拷贝数,从而避免越界的情况。

strncmp比较前n个字符。


6.strstr(字符串匹配)

判定str2是否是str1的字符串子串,或者str1是否包含str2。比如:str1 = "hello word"   str2 = "llo"。

包含:返回结果为str1中首次出现" llo "中“ l "的位置。

不包含:返回NULL。


7.strtok(字符串切分)

此函数需要调用很多次,才能完成切分。是一个反面教材。

原因:多次调用;多次调用的参数还不一致;strtok在内部记录了一个状态(上次切分的位置),会导致“线程不安全”,无法在多线程环境下使用strtok。


内存函数

1.memcpy(内存拷贝)

格式:void* memcpy(void* destination ,const void* source,size_t num);

解释一下:

void :返回void* destination为了能链式调用。

void*:可兼容各种不同类型的指针,实参是int*,char*,结构体*都可以。

size_t:拷贝多少字节。


2.memmove(内存拷贝)(能支持内存重叠的情况)

举个例子:src和dest内存重叠了可以选择倒着传


总结:str系列的函数只能针对字符串来使用(只能针对带有 的字符数组来使用)。

           mem系列的函数,只要是内存,就能用。 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/456859.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号