LinuxC简谈之字符串函数及其实现
来源:互联网 发布:网络整合营销 编辑:程序博客网 时间:2024/06/05 15:58
研究了一段时间字符串后,我总结了一些关于字符串函数的理解,字符串函数也称为字符串处理函数,如字符串求长度(strlen)、字符串复制(strcpy)、字符串连接(strcat)、字符串比较(strcmp)等等。在这里我将介绍一下这些字符串函数的原型以及我自己实现这些功能的函数及用法。
1、字符串求长度(strlen)
函数原型:
求出该字符串的长度并返回该长度(不包括'\0')。str指向空,返回-1。
2、字符串复制(strcpy)
函数原型:
3、有限制的字符串复制(strncpy)
函数原型:
4、字符串连接(strcat)
函数原型:
5、有限制的字符串连接(strncat)
函数原型:
6、字符串比较(strcmp)
函数原型:
7、有限制的字符串比较(strncmp)
函数原型:
有关更多字符串函数的知识,希望和大家一起讨论分享。
1、字符串求长度(strlen)
函数原型:
int strlen(const char *str);
我的实现://求字符串长度int Strlen(const char *str){if (str == NULL){return -1;}int len = 0;while (*str++){len++;}return len;}
作用及返回值:求出该字符串的长度并返回该长度(不包括'\0')。str指向空,返回-1。
2、字符串复制(strcpy)
函数原型:
char *strcpy(char *dest,const char *src);
我的实现://复制字符串char *Strcpy(char *dest,const char *src){if (dest == NULL || src == NULL){return NULL;}char *str1 = dest;while (*str1++ = *src++);return dest;}
作用及返回值:将src指向的字符串整个保存到dest指向的空间,包括'\0'。要求dest指向的空间足够大,可以容纳下src指向的字符串,否则会发生溢出。返回dest,dest或src指向空,返回空。3、有限制的字符串复制(strncpy)
函数原型:
char *strncpy(char *dest,const char *src,int n);
我的实现://有限制的复制字符串char *Strncpy(char *dest,const char *src,int n){if (dest == NULL || src == NULL){return NULL;}char *str1 = dest;while (n--){if (*src == 0){*str1++ = 0;continue;}*str1++ = *src++;}return dest;}
作用及返回值:将src指向的字符串前n个字符保存到dest指向的空间,如果该字符串长度不足n,则以'\0'填充dest指向的空间直到复制完n个字节。要求dest指向的空间不小于n个字节。返回dest,dest或src指向空,返回空。4、字符串连接(strcat)
函数原型:
char *strcat(char *dest,const char *src);
我的实现://连接字符串char *Strcat(char *dest,const char *src){if (dest == NULL || src == NULL){return NULL;}char *str1 = dest;while (*str1++);str1--;while (*str1++ = *src++);return dest;}
作用及返回值:将src指向的字符串整个保存到dest指向的字符串末尾并覆盖掉'\0',包括'\0'。要求dest指向的空间足够大,大于两个字符串长度之和,否则会发生溢出。返回dest,dest或src指向空,返回空。5、有限制的字符串连接(strncat)
函数原型:
char *strncat(char *dest,const char *src,int n);
我的实现://有限制的连接字符串char *Strncat(char *dest,const char *src,int n){if (dest == NULL || src == NULL){return NULL;}char *str1 = dest;while (*str1++);str1--;while (n--){if (*src == 0){*str1++ = 0;continue;}*str1++ = *src++;}*str1 = '\0';return dest;}
作用及返回值:将src指向的字符串前n个字符保存到dest指向的字符串末尾并覆盖掉'\0',然后在末尾加上'\0'。如果src指向的字符串长度不足n,则以'\0'填充dest指向的空间直到复制完n个字节。要求dest指向的空间足够大,大于dest指向的字符串长度与n之和,否则会发生溢出。返回dest,dest或src指向空,返回空。6、字符串比较(strcmp)
函数原型:
int strcmp(const char *str1,const char *str2);
我的实现://比较字符串int Strcmp(const char *str1,const char *str2){if (str1 == NULL || str2 == NULL){return FALSE;}do{if(*str1 != *str2){return *str1 - *str2;}}while(*str1++ && *str2++);return 0;}
作用及返回值:让str1指向的字符串与str2指向的字符串逐个字符比较其ASCII码值,相等则继续往后比较,直到比较到不相等或其中一个字符为'\0'。返回最后比较的两个字符的差值(也可以其他实现方法)。如果相等,返回值为0,如果str1大于str2,则返回小于127的正数,如果str1小于str2,则返回大于-127的负数。str1或sre2指向空,返回FALSE(可以定义一个大于126或小于-126的宏)。7、有限制的字符串比较(strncmp)
函数原型:
int strncmp(const char *str1,const char *str2,int n);
我的实现://有限制的比较字符串int Strncmp(const char *str1,const char *str2,int n){if (str1 == NULL || str2 == NULL){return FALSE;}while(n--){if(*str1 != *str2){return *str1 - *str2;}if(!(*str1++ && *str2++)){return 0;}}return 0;}
作用及返回值:让str1指向的字符串与str2指向的字符串逐个比较前n个字符的ASCII码值,相等则继续往后比较,直到比较到不相等或其中一个字符为'\0'或者第n个字符。返回最后比较的两个字符的差值(也可以其他实现方法)。如果相等,返回值为0,如果str1大于str2,则返回小于127的正数,如果str1小于str2,则返回大于-127的负数。str1或sre2指向空,返回FALSE(可以定义一个大于126或小于-126的宏)。有关更多字符串函数的知识,希望和大家一起讨论分享。
阅读全文
0 0
- LinuxC简谈之字符串函数及其实现
- linuxC函数之exec
- LinuxC简谈之数组、字符串与指针相关的常见错误与问题
- LinuxC实现文件夹及其文件的拷贝
- LinuxC简谈之输入输出(一)
- LinuxC简谈之输入输出(二)
- LinuxC简谈之输入输出(三)
- LinuxC学习之整型数转字符串
- LinuxC学习之字符和字符串操作
- LinuxC学习之myshell的实现
- 字符串操作函数的使用及其实现
- OC之字符串及其操作函数
- linuxC下实现密文密码的输入函数
- 字符串及其操作函数
- 嵌入式linuxC函数整理
- linuxC stat函数随记
- linuxc时间函数
- LinuxC select函数详解
- 空对象调用属性或方法,equals();;StringBuffer简单用法,字符串的追加,插入和替换。
- 《leetCode》:Longest Common Prefix
- LWLR 局部加权线性回归---Python实现
- 一位资深程序员大牛给予Java初学者的学习路线建议
- java编程思想笔记-并发之线程加入
- LinuxC简谈之字符串函数及其实现
- php链接mysql及mysqli深入透析
- How Tomcat works之(一个简单的web服务器)
- kafka 容器报内存不足异常(failed; error='Cannot allocate memory' (errno=12))
- 离线应用和本地存储
- 容器
- javascript中的this词法
- spring boot 下mybatis的mapper Could not autowire问题
- Mysql常用命令行集