字符串(一)strlen、strcpy、strcat的实现
来源:互联网 发布:淘宝网上买手机可靠吗 编辑:程序博客网 时间:2024/06/06 00:43
/返回字符串的长度int mystrlen(char *p){ int a = 0; while ((*p++ )!='\0') { a++; } return a;}
//拷贝字符串,将内存source上的值存到另一个内存上char *mystrcpy(char *dest,const char *source){ if (dest == NULL || source == NULL) return NULL; char *p = dest; while (*source != '\0') *dest++ = *source++; *dest= '\0'; return p;}
1、一定要注意检查指针,所以这里返回char*用于检查;要新申请一个指针指向dest并返回这个指针,为什么不能直接返回dest呢?因为返回dest是修改后的值,指针增加后的值,需返回dest最初的地址。
2、此处的函数调用能更改指针指向的值,并不会更改指针的值
3、此处使用const,是规定该函数范围内不能更改source指向的内容的值
//拼接字符串,把p2拼到p1后面char *mystrcat(char *p1,const char *p2){ if (p1 == NULL || p2 == NULL) return NULL; char *q = p1; while (*p1 != '\0') p1++; while ((*p1++ = *p2++) != '\0'); return q;}
这里的p1一定要有足够的空间,如果主函数是char *ss=”abc”,想要在ss后面拼接就会报错,因为ss只有4个字节(连\0一起)
完整的程序如下:
#include<stdio.h>#include<stdlib.h>#include<string.h>//返回字符串的长度int mystrlen(char *p){ int a = 0; while ((*p++ )!='\0') { a++; } return a;}//拷贝字符串,将内存source上的值存到另一个内存上char *mystrcpy(char *dest,const char *source){ if (dest == NULL || source == NULL) return NULL; char *p = dest; while (*source != '\0')//与下面两行可以合写成while((*dest++=*source++)!='\0');先赋值再判断是否循环 *dest++ = *source++; *dest= '\0'; return p;}//拼接字符串,把p2拼到p1后面char *mystrcat(char *p1,const char *p2){ if (p1 == NULL || p2 == NULL) return NULL; char *q = p1; while (*p1 != '\0') p1++; while ((*p1++ = *p2++) != '\0'); return q;}int main(void){ char c[50]="jjj"; char *b = "hhh"; char *s = malloc(10*sizeof(char)); char *q = malloc(10 * sizeof(char)); gets(s); printf("%d\n", mystrlen(s)); mystrcpy(q, s); printf("%s\n", q); mystrcat(c, b); printf("%s\n", c); free(s); free(q); return 0;}
0 0
- 字符串(一)strlen、strcpy、strcat的实现
- 字符串函数的实现(StrLen、StrCpy、StrCat、StrReverse)
- strlen, strcpy, strcat, strcmp, memset... (字符串操作函数的实现)
- strlen、strcpy、strcat等字符串处理函数的实现
- 字符串训练(一)模拟实现strlen,strcmp,strcpy,strcat函数
- 字符串处理函数的模拟实现(strlen、strstr、strcat、strcmp、strcpy、memmove、memcpy)
- c语言学习笔记(字符串函数strcmp,strcat,strcpy,strlen的简单实现)
- C语言中字符串相关函数的实现(strcat strlen strcmp strcpy memcpy)
- C语言字符串函数的模拟实现(strlen、strcpy、strcat、strstr 、strcmp)
- strcpy, strcmp, strcat, strstr, strlen的实现
- strlen/strcmp/strcat/strcpy的实现
- strlen,strcpy,strcat,strcmp函数的实现
- strcat, strcpy, strlen, strcmp实现
- strlen、strcat、strcpy函数实现
- 模拟实现strlen,strcpy,strcat
- 字符串库函数strlen,strcmp,strcpy,strncpy,strcat,strncat自定义实现
- 字符串函数strcat, strcpy, strcmp, strlen实现模型
- 常见的字符串函数之strlen函数,strcpy函数,strcat函数的实现;
- sublime插件整理
- Uva11093 Just Finish it up【模拟】【例题8-13】
- 51nod 1086【背包·DP】
- 每日一省之————加权有向图的最短路径问题
- openstack虚拟机发放速度优化
- 字符串(一)strlen、strcpy、strcat的实现
- Android PopupWindow的使用技巧 Android上自定义弹出窗口
- 从键盘输入一个整数,然后逆序输出
- 史上最详细的iOS之事件的传递和响应机制-原理篇
- java零基础的外行人
- Phoenix在建表是报出java.lang.ArrayIndexOutOfBoundsException的处理方法
- struct device
- CSS神奇的代码-背景透明内容不透明
- 删除数组中相同的元素