这篇文章主要介绍了C语言strlen,strcpy,strcmp,strcat,strstr字符串操作函数实现,,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
前言:
今天来实现strlen、strcpy、strcmp、strcat、strstr三个比较常见的字符串操作函数,具体实现如下。
strlen
C 库函数 size_t strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。
int my_strlen(const char* p) {
int size = 0;
//找到末尾停止
while (*p != '\0') {
p++;
size++;
}
return size;
}strcpy
C 库函数 char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。需要注意的是如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况。
char* my_strcpy(char* dest, const char* src) {
//判断传入是否为空
if (src == NULL || dest == NULL) {
return dest;
}
char* pdest = dest;
//不为空打印
while (*src != '\0') {
*pdest = *src;
pdest++;
src++;
}
//末尾加'\0'
*pdest = '\0';
return dest;
}strcmp
C 库函数 int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串进行比较。
int my_strcmp(const char* str1, const char* str2) {
//一直往后查找直到其中一个结尾或者他们二者不相等为止
while (*str1 != '\0' && *str2 != '\0' && (*str1 == *str2)) {
str1++;
str2++;
}
return *str1 - *str2;
}strcat
C 库函数 char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。
char* my_strcat(char* dest, const char* src) {
char* pdest = dest;
//pdset先走到末尾
while (*pdest != '\0') {
pdest++;
}
//链接
while (*src != '\0') {
*pdest = *src;
pdest++;
src++;
}
//加结尾标志'\0'
*pdest = '\0';
return dest;
}strstr
C 库函数 char *strstr(const char *haystack, const char *needle) 在字符串 haystack 中查找第一次出现字符串 needle 的位置,不包含终止符 ‘\0’。
char* my_strstr(const char* dest, const char* src) {
//断言非空
assert(dest && src);
while (*dest != '\0') {
//记录dest src初始位置
char* pdest = dest;
char* psrc = src;
//若相等则继续比较
while (*pdest == *psrc || *psrc == '\0') {
//如果psrc=='\0' 则说明找到子串
if (*psrc == '\0') {
return dest;
}
//psrc 未到 \0 则继续比较是否相等
pdest++;
psrc++;
}
dest++;
}
return NULL;
}到此这篇关于C语言strlen,strcpy,strcmp,strcat,strstr字符串操作函数实现的文章就介绍到这了,更多相关C语言字符串操作内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:C语言strlen,strcpy,strcmp,strcat,strstr字符串操作函数实现
- Easyx实现扫雷游戏 2023-02-06
- C语言详解float类型在内存中的存储方式 2023-03-27
- Qt计时器使用方法详解 2023-05-30
- 我应该为我的项目使用相对包含路径,还是将包含目录放在包含路径上? 2022-10-30
- C语言qsort()函数的使用方法详解 2023-04-26
- C语言手把手带你掌握带头双向循环链表 2023-04-03
- ubuntu下C/C++获取剩余内存 2023-09-18
- C++ 数据结构超详细讲解顺序表 2023-03-25
- c++ const 成员函数,返回一个 const 指针.但是返回的指针是什么类型的 const? 2022-10-11
- 详解C语言中sizeof如何在自定义函数中正常工作 2023-04-09
