字符及字符串函数详解

本文详细介绍了C语言中一些常用的字符串处理函数,包括strlen用于计算字符串长度,strcpy和strcat分别用于字符串拷贝和拼接,strcmp进行字符串比较,以及strncpy和strncat的限制拷贝和拼接功能。此外,还提到了strtok的分隔符字符串切割,strstr的子串查找,以及错误处理函数strerror和内存操作函数memcpy、memmove和memcmp。
摘要由CSDN通过智能技术生成

目录

size_t strlen(const char* source)

char*strcpy(char* destination,const char * source)

char* strcat(char* destination, const char *source)

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

char * strncpy(char* destination,const char* source, size_t num);

char* strncat(char* destination,char* source,size_t num);

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

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

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

char* strerror(int errno)

void prror(const char * str)

void * memcpy(void *destination,const void *source,size_t num)

void * memmove(void *destination,const void * source,size_t num)

int memcmp ( const void * ptr1,const void * ptr2,size_t num );


size_t strlen(const char* source)

返回值为unsigned int 类型,返回传入所指向的区域在遇到'\0'之前所有的字符数目,模拟实现有循环法和递归法。

char*strcpy(char* destination,const char * source)

将源位置的字符串拷贝到目标位置的字符串,在源位置遇到'\0'的时候停止,目标空间必须可以修改,vs2019中strcpy在遇到目标位置和源位置重叠的时候不会出问题。

如果拷贝成功返回的是目标位置的首地址,如果拷贝失败返回NULL

char* strcat(char* destination, const char *source)

strcpy是将源位置的字符放到destination中,如果本来有数据则替换,而strcat函数则是在destination后加上source内的字符。

返回值和strcpy相同

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

将两个str1与str2逐字符比较,如果遇到str1,str2中的字符的首个不同时返回:

返回值为:

str1大,返回大于0的数字

相等:返回0

str2大:返回小于0的数字

char * strncpy(char* destination,const char* source, size_t num);

从source中拷贝Num个字符给到destination中,如果在num个传递之前已经遇到'\0'则在后追加0

返回值与strcpy相似。

char* strncat(char* destination,char* source,size_t num);

在destination后追加num个来自source的字符,不足时同样补0。

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

比较str1 str2的前num个字符串,返回值与strcmp的原理相同。

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

在str1中寻找str2,如果找到则返回一个指向str2在str1中首次出现位置的指针,如果没找到则返回null

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

第二个参数为分隔符,可以不只有一个,str为被切割的字符串,将str中的分隔符删除,改为'\0'后返回开头地址,如果strtok如果第一个参数为null,则此时函数会记住上次使用时的位置,从呢之后继续开始访问        

char* strerror(int errno)

errno 仅仅为0 1 2 3 4 5在使用的时候要errno.h,在使用的时候直接

printf("%s",strerror(errno))打印信息即可  

0表示没有错误

1表示没有权利执行次操作

2没有此文件

3没有这个过程

4过程被打断

5输入输出错误

多次调用可以捕获不同的错误信息

void prror(const char * str)

打印出"str":+错误信息

void * memcpy(void *destination,const void *source,size_t num)

将source 的前num个字节的数据拷贝到destination所指向的内存里去,在遇到“\0”的时候不会停下来,如果des和sour有重叠时非法的,复制结果未定义。

要注意,memcpy和strcpy不同的就是操作对象一个是对内存中任意的数据均可以拷贝,另一个则是对字符串的对象进行操作,同时操作的单位也是字节,要计算好每次处理的字节以防出错,可以多用sizeof

void * memmove(void *destination,const void * source,size_t num)

如果des 和 source没有重合,则这个函数与memcpy相似,而如果两个有重合,则不太相同,这个函数会防止出错调整赋值顺序而避免全部被赋成相同的元素。

int memcmp ( const void * ptr1,const void * ptr2,size_t num );

按照字节比较,返回值与此前的比较函数没差

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值