![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字符串
youfuwenn
所有内容的主要目的是自我学习
展开
-
模拟实现strcmp
int my_strcmp(const char*str1, const char*str2) { assert(str1 && str2); while (*str1 == *str2 && *str1)//第一个元素相等则进入,不相等则直接返回,若只有一个'\0',此时不满足第一个条件。 { str1++; str2++; } return *str1 - *str2; } int main() { int ret = 0; char st.原创 2021-10-28 20:47:59 · 57 阅读 · 0 评论 -
模拟实现strchr
char* my_strchr(const char*str1,const char s) { if (str1 == NULL) //这里不用断言,若碰到空指针就返回NULL就行了。 { return NULL; } while (*str1 != s &&*str1) { str1++; } if (*str1 != '\0') return (char*)str1; else return NULL; } int main() { char str.原创 2021-10-28 16:58:11 · 87 阅读 · 0 评论 -
模拟实现strcpy
void my_strcpy(char*dest,const char*src)//const 有防止把长的字符串拷贝到短的字符窜中,若发生这 种情况程序会崩溃。 { assert(dest != NULL);//若为空指针无法解引用,强行操作代码无法运行 assert(src != NULL); while (*dest++ = *src++)//先赋值再加加,当src = ‘\0’,赋值表达式的值为其asc码值0(因为赋的是‘\0’的按asc码值), .原创 2021-10-27 14:39:07 · 45 阅读 · 0 评论 -
模拟实现strcat
char* my_strcat(char*dest,const char*src) { char*p = dest; assert(dest && src); //while (*dest++) error dest 先自己加1再返回原来的值进行解引用,所以出循环的时候dest是‘\0’后面元素的地址。 while (dest != '\0') { dest++; } while (*dest++ = *src++)//dest 和 sor先自加1,返回原来的.原创 2021-10-28 08:30:25 · 96 阅读 · 0 评论 -
2.判断一个字符串是否为另外一个字符串旋转之后的字符串。例如:给定s1 =AABCD和s2 = BCDAA,返回1给定s1=abcd和s2=ACBD,返回0.AABCD左旋一个字符得到ABCD
void left_move(char s1[], int i) { int len = strlen(s1); while (i--) //若i为2,该循环就执行两次,每一次就是左旋转1个字符 { int j = 0; char temp = s1[0]; for (j = 0; j < len - 1; j++) { s1[j] = s1[j + 1]; } s1[j] = temp; } } int panA(char s1[], char s2[].原创 2021-10-26 21:00:31 · 83 阅读 · 0 评论 -
模拟实现strstr
const char* my_strstr(const char* a,const char* b) { assert(a && b); unsigned int i = 0;//因为下面要和strlen的返回值比较,他的返回值是unsigned int for ( i = 0; i<strlen(a) ;i++) { if ((a[i] == b[0]) && (strncmp(a+i,b,strlen(b)) == 0))//第二个条件可以有效.原创 2021-10-28 16:25:26 · 44 阅读 · 0 评论