1.模拟计算字符串长度 strlen
my_strlen
1.0指针的方式 难度系数***
#include<stdio.h> #include<string.h> int my_strlen(char *s) { char *p = s; while(*p != '\0') { p++; } return p-s; } int main() { int ret = 0; char arr[10] = "abcder"; ret = my_strlen(arr); printf("%d\n",ret); return 0; }
2.0递归不创建临时变量 难度**
#include<stdio.h> #include<string.h> int my_strlen(const char *s) { if(*s == '\0') return 0; else return 1+my_strlen(s+1); } int main() { int ret = 0; char arr[10] = "abcder"; ret = my_strlen(arr); printf("%d\n",ret); return 0; }
3.0计数器方式 难度*
#include<stdio.h> #include<string.h> int my_strlen(const char *s) { int count = 0; while(*s) { count++; s++; } return count; } int main() { int ret = 0; char arr[10] = "abcder"; ret = my_strlen(arr); printf("%d\n",ret); return 0; }
2.模拟拷贝一段字符strcpy
char* my_strcpy(char *dest, const char *src)//为了保证源字符串不被改变,需要在定义字符串之前加上const修饰;在这里需要注意,目标字符串必须有足够大的空间 { assert(dest != NULL&&src != NULL); char * address = dest;//保存目标字符串的起始地址,为了从起始地址开始返回拷贝之后的字符串 while ((*dest++ = *src++))//后置++,先使用,后++,先把源字符串的第一个字符拷到目标字符串中,然后依次向后拷贝,最后再与'\0'进行比较,当指针走到'\0'时,while语句不成立,结束循环 { ; } *dest = '\0';//需要将'\0'也拷贝进去 return address; }
更新中......