如何用C语言实现字符串操作函数,而不使用strlen、strcpy、strcmp、strcat、strstr?

2026-04-12 09:511阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计904个文字,预计阅读时间需要4分钟。

如何用C语言实现字符串操作函数,而不使用strlen、strcpy、strcmp、strcat、strstr?

目录+ strlen ++ strcpy ++ strcmp ++ strcat ++ strstr +前语:今天我们来实现strlen、strcpy、strcmp、strcat、strstr这三个常见的字符串操作函数。

strlenC++ 库函数size_t strlen(const char *str)计算字符串str的长度,不包括结束符'\0'。

实现:cppsize_t my_strlen(const char *str) { size_t length=0; while (str[length] !='\0') { length++; } return length;}

strcpyC++ 库函数char *strcpy(char *dest, const char *src)将字符串src复制到dest中,并返回dest的指针。

实现:cppchar *my_strcpy(char *dest, const char *src) { while (*src) { *dest++=*src++; } *dest='\0'; // 确保复制后的字符串以'\0'结尾 return dest;}

如何用C语言实现字符串操作函数,而不使用strlen、strcpy、strcmp、strcat、strstr?

strcmpC++ 库函数int strcmp(const char *str1, const char *str2)比较字符串str1和str2,如果str1小于str2,返回负数;如果相等,返回0;如果str1大于str2,返回正数。

实现:cppint my_strcmp(const char *str1, const char *str2) { while (*str1 && (*str1==*str2)) { str1++; str2++; } return *(const unsigned char *)str1 - *(const unsigned char *)str2;}

strcatC++ 库函数char *strcat(char *dest, const char *src)将字符串src连接到dest的末尾,并返回dest的指针。

实现:cppchar *my_strcat(char *dest, const char *src) { while (*dest) { dest++; } while (*src) { *dest++=*src++; } *dest='\0'; // 确保连接后的字符串以'\0'结尾 return dest;}

strstrC++ 库函数char *strstr(const char *haystack, const char *needle)在字符串haystack中查找子字符串needle,如果找到,返回needle的指针;否则返回NULL。

实现:cppchar *my_strstr(const char *haystack, const char *needle) { while (*haystack) { const char *h=haystack; const char *n=needle; while (*h && (*h==*n)) { h++; n++; } if (*n=='\0') { return (char *)haystack; } haystack++; } return NULL;}

目录
  • 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语言字符串操作内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

本文共计904个文字,预计阅读时间需要4分钟。

如何用C语言实现字符串操作函数,而不使用strlen、strcpy、strcmp、strcat、strstr?

目录+ strlen ++ strcpy ++ strcmp ++ strcat ++ strstr +前语:今天我们来实现strlen、strcpy、strcmp、strcat、strstr这三个常见的字符串操作函数。

strlenC++ 库函数size_t strlen(const char *str)计算字符串str的长度,不包括结束符'\0'。

实现:cppsize_t my_strlen(const char *str) { size_t length=0; while (str[length] !='\0') { length++; } return length;}

strcpyC++ 库函数char *strcpy(char *dest, const char *src)将字符串src复制到dest中,并返回dest的指针。

实现:cppchar *my_strcpy(char *dest, const char *src) { while (*src) { *dest++=*src++; } *dest='\0'; // 确保复制后的字符串以'\0'结尾 return dest;}

如何用C语言实现字符串操作函数,而不使用strlen、strcpy、strcmp、strcat、strstr?

strcmpC++ 库函数int strcmp(const char *str1, const char *str2)比较字符串str1和str2,如果str1小于str2,返回负数;如果相等,返回0;如果str1大于str2,返回正数。

实现:cppint my_strcmp(const char *str1, const char *str2) { while (*str1 && (*str1==*str2)) { str1++; str2++; } return *(const unsigned char *)str1 - *(const unsigned char *)str2;}

strcatC++ 库函数char *strcat(char *dest, const char *src)将字符串src连接到dest的末尾,并返回dest的指针。

实现:cppchar *my_strcat(char *dest, const char *src) { while (*dest) { dest++; } while (*src) { *dest++=*src++; } *dest='\0'; // 确保连接后的字符串以'\0'结尾 return dest;}

strstrC++ 库函数char *strstr(const char *haystack, const char *needle)在字符串haystack中查找子字符串needle,如果找到,返回needle的指针;否则返回NULL。

实现:cppchar *my_strstr(const char *haystack, const char *needle) { while (*haystack) { const char *h=haystack; const char *n=needle; while (*h && (*h==*n)) { h++; n++; } if (*n=='\0') { return (char *)haystack; } haystack++; } return NULL;}

目录
  • 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语言字符串操作内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!