库函数之字符函数与字符串函数(下) 您所在的位置:网站首页 追加函数 库函数之字符函数与字符串函数(下)

库函数之字符函数与字符串函数(下)

2023-03-29 09:58| 来源: 网络整理| 查看: 265

前言目录前言一、strncpy函数,strncat函数,strncmp函数函数作用strncpy函数strncat函数strncmp函数函数参数模型参数介绍模拟实现strncpy模拟实现strncat函数模拟实现strncmp函数二、strstr函数函数参数模型函数作用:函数的应用模拟实现动图解析:三、strtok函数函数参数模型函数作用:函数应用strtok函数注意事项:四、strerror函数函数作用函数应用一、strncpy函数,strncat函数,strncmp函数

头文件:#include

看过上一篇的小伙伴们都知道,对于下列函数应该都有所了解.

strcpy函数:.拷贝字符串函数 strcat函数:.追加字符函数 strcmp函数:.字符串拷贝函数

这些函数在使用时,都是遇到’\0’,才停止他们的拷贝,追加,比较等操作 如果我们想要只操作其中的部分,就可以增加一个参数来实现. 由于功能参数等与前面的函数相似,本篇不做重点讲解.

函数作用strncpy函数

拷贝num个字符从源字符串到目标空间

strncat函数

追加num个源字符到目标空间

strncmp函数

比较两个字符串的前num个字符,返回值与strcmp一致.

函数参数模型

char * strncpy ( char * destination, const char * source, size_t num ); char * strncat ( char * destination, const char * source, size_t num ); int strncmp ( const char * str1, const char * str2, size_t num );

参数介绍

增加一个size_t 类型的参数num,用于限定原来的函数.

模拟实现strncpy#include #include char* my_strncpy(char* strDest, const char* strSource, size_t count) { assert(strDest); assert(strSource); char* ret = strDest; while (count--) { *strDest++ = *strSource++; } return ret; } int main() { char arr1[20] = "xxxxxxxxxxxxxx"; char arr2[] = "Hello CSDN!"; int sz2 = sizeof(arr2) / sizeof(arr2[0]); printf("%s", my_strncpy(arr1,arr2,5)); return 0; }

运行结果:

Helloxxxxxxxxx

注意:

1.strncpy只拷贝num个字符,并不会额外附加’\0’字符. 2.如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个. 这个在模拟的时候并没有添加上去.

模拟实现strncat函数#include #include char* my_strncat(char* destination, const char* source, size_t num) { assert(destination); assert(source); char* ret = destination; while (*destination != '\0') { destination++; } while (num--) { *destination++ = *source++; } return ret; } int main() { char arr1[20] = "Hello "; char arr2[] = "CSDN!"; int sz2 = sizeof(arr2) / sizeof(arr2[0]); printf("%s", my_strncat(arr1, arr2, 3)); return 0; }

运行结果:

Hello CSD

模拟实现strncmp函数#include #include int my_strncmp(const char* str1, const char* str2, size_t num) { while (num--) { if (*str1 > *str2) { return 1; } else if (*str1 < *str2) { return -1; } str1++; str2++; } return 0; } int main() { char arr1[20] = "aabbccdd"; char arr2[] = "aabbcdef"; int sz2 = sizeof(arr2) / sizeof(arr2[0]); printf("%d", my_strncmp(arr1, arr2, 5)); return 0; }

运行结果:

0

解释: 因为前5个字符相同,num个字符比较结束,认为是相同字符串.

二、strstr函数

strstr函数

头文件:#include

函数参数模型函数作用:

用于查找主字符串中是否包含子字符串.包含返回第一次匹配成功的字符首地址.不包含则返回NULL.

函数的应用

力扣------找出字符串中第一个匹配的下标. 通过strstr函数找到第一个匹配的字符指针,

该指针-字符串首地址指针=该字符的下标.

int strStr(char * haystack, char * needle){ char*ret=strstr(haystack,needle); if(ret-haystack


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有