菜鸟学习历程【8】 string相关库函数的自我实现
来源:互联网 发布:白额高脚蛛淘宝 编辑:程序博客网 时间:2024/06/06 20:15
string相关库函数的自我实现
一、strcpy函数
格式:strcpy(cahr *str, char *ptr);
功能:将ptr 指向的字符串内容覆盖到str所指向的字符串中,注意说的是覆盖,如果str长于ptr,使用该函数会完全覆盖str的内容。
#include <stdio.h>char *my_strcpy(char *s1, char *p1){char *tmp = s1;while((*s1++ = *p1++)!= '\0');return tmp;}
说明:形参为两个字符串的地址,将p1所指向的内容复制给s1时,也对这两个地址进行操作,当p1为‘\0’时,会停止运算,并返回s1字符串所指向字符串的首地址,tmp就是存放这个地址而定义的。二、strcnpy函数
格式:strncpy(char *str,cahr * ptr,int n);
功能:指定将ptr指向的字符串的前n个字节,复制到str指向的字符串中;此时,如果str指向的字符串长于ptr所指向的字符串,也不会覆盖后面内容。#include <stdio.h>char *my_strncpy(char *s1, char *p1, int num){int i = 0;char *tmp = s1;for(i = 0;i < num;i++){*(s1+i) = *(p1+i); }return tmp;}
说明:我们只需要指定循环的次数等同于指定复制的n的字节数,就可以完成这样的功能;三、strcmp函数
格式:strcmp(char *str, char *ptr);
功能:比较两个字符串的大小,一位一位的比较,当第一位相同时,比较第二位....最终结果有三种,当str > ptr时,返回值大于零、当str < ptr 时,返回值小于零、当str == ptr时,返回值等于零;
#include <stdio.h>int my_strcmp(char *s1, char *p1){while(*s1 != '\0'|| *p1 != '\0'){if(*s1 > *p1)return 1;else if(*s1 < *p1)return -1;else{p1++;s1++;}}if(*p1 == '\0' && *s1 == '\0')return 0;}
说明:循环的总次数应该等同于最长字符串的长度,原因是避免两个字符串前n-1为相同,而最后一位不同,这种情况无返回值。四、strncmp函数
格式:strncmp(char *str,char * ptr ,int n)
功能:比较str与ptr的前n个字节是否相同,若str与ptr的前n个字符相同,则返回0;若str大于ptr,则返回大于0的值;若str 若小于ptr,则返回小于0的值。
#include <stdio.h>int my_strncmp(char *s1, char *p1, int length){int count = 0;int len = length;while(length-- != 0) { if(*s1 > *p1)return 1;else if(*s1 < *p1)return -1;else{p1++;s1++;count++;}}if(count == len)return 0;}
说明:通过length来控制循环次数,逐字节比较大小,定义count记录相同的次数,当count的值等于length时,说明两个字符串比较内容相等。五、strlen函数
格式:strlen(char *str)
功能:统计字符串str的长度,不包括‘\0’
#include <stdio.h>int my_strlen(char *s1){int count = 0;while(*s1++ != '\0'){count++;}return count;}
说明:利用字符串尾为‘\0’的特点,提供循环依据,定义count记录循环的次数,最终返回字符串的长度。阅读全文
0 0
- 菜鸟学习历程【8】 string相关库函数的自我实现
- 部分库函数的自我实现
- java菜鸟的学习历程
- 菜鸟的Linux历程-学习大纲
- c sharp 菜鸟的学习历程
- c sharp 菜鸟的学习历程2
- c sharp 菜鸟的学习历程3
- c sharp 菜鸟的学习历程4
- 各种string乱花眼,论菜鸟的自我修养
- c语言中部分库函数的自我实现
- [心灵老鸭汤]一个菜鸟提升自我修养的辛路历程
- string.h中库函数的实现
- 几种string库函数的实现
- 一个立志终身学习的菜鸟之-------学习历程
- 模拟实现string库函数
- 菜鸟之计算机学习历程
- C_sharp:一个菜鸟学习历程
- 菜鸟学习历程【11】数据结构
- LINUX 关机与重启命令详解
- C++11智能指针Shared_ptr陷阱
- Vue框架
- gdb交叉编译到arm开发板
- Computer (树形dp)
- 菜鸟学习历程【8】 string相关库函数的自我实现
- 6.12
- ESP-32 官方开发平台搭建过程小结
- coursera-斯坦福-机器学习-吴恩达-第1周笔记
- 为什么使用数据库从库
- [arc064f]Rotated Palindromes
- 九九乘法表
- Android中Jni的基本使用详解
- Android Window 机制探索