1、自定义函数(my_strlen)实现strlen函数的功能
#include "stdio.h"
int str_len(char *arr)
{
if(*arr=='\0') //如果字符串为空,则长度为0
{
return 0;
}
return 1+str_len(1+arr); //递归
}
int main(int argc, char const *argv[])
{
char arr[100];
int len=0;
printf("请输入一个字符串:");
gets(arr);
int result=str_len(arr);
printf("该字符串长度为: %d\n",result);
return 0;
}
2、自定义函数(my_strcpy)实现strcpy函数的功能
#include <stdio.h>
// 自定义函数实现 strcpy 的功能
void my_strcpy(char *dest, char *src) {
char *d = dest;
char *s = src;
while ((*d++ = *s++) != '\0');
return dest;
}
int main() {
char *src[100] ;
printf("请输入要复制的字符串:");
gets(src);
char dest[50]="";
printf("请输入被复制的字符串:");
gets(dest);
printf("源字符串dest: %s\n", dest);
my_strcpy(dest, src);
printf("复制后的字符串dest: %s\n", dest);
return 0;
}
3、自定义函数(my_strcmp)实现strcmo函数的功能
#include "stdio.h"
int my_strcmp( char *str1, char *str2) {
char *s1 = ( char *)str1;
char *s2 = ( char *)str2;
while (*s1 && (*s1 == *s2)) {
s1++;
s2++;
}
return *(char *)s1 - *(char *)s2;
}
int main(int argc, char *argv[])
{
char str1[100];
char str2[100];
printf("请输入字符串一:");
gets(str1);
printf("请输入字符串二:");
gets(str2);
int result=my_strcmp(str1,str2);
if(result>0)
{
printf("字符串一大\n");
}else if(result<0)
{
printf("字符串二大\n");
}else
{
printf("一样大\n");
}
return 0;
}
4、自定义函数(my_strcat)实现strcat函数的功能
#include <stdio.h>
// 自定义函数实现 strcat 的功能
void my_strcat(char *str1, char *str2) {
char *x = (char *)str1;
char *y = ( char *)str2;
// 找到目标字符串的末尾
while (*x) {
x++;
}
// 将源字符串复制到目标字符串末尾
while ((*x++ = *y++) != '\0');
}
int main(int argc, char *argv[])
{
char str1[100];
char str2[100];
printf("输入字符串:");
gets(str1);
printf("输入要拼接的字符串:");
gets(str2);
my_strcat(str1,str2);
printf("拼接后的字符串:%s\n",str1);
return 0;
}
5、自定义函数(my_strstr)实现求src字符串中是否包含子串dest字符串
#include <stdio.h>
// 自定义函数实现 strstr 的功能
void* my_strstr( void *src, void *dest) {
char *s = ( char *)src;
char *d = ( char *)dest;
if (!*d) {
return (void *)s; // 如果子串为空,返回源字符串
}
while (*s) {
char *s1 = s;
char *d1 = d;
// 比较源字符串中的一段和子串
while (*s1 && *d1 && (*s1 == *d1)) {
s1++;
d1++;
}
// 如果子串全部匹配完,则返回匹配的起始位置
if (!*d1) {
return (void *)s;
}
s++;
}
return NULL; // 未找到子串,返回 NULL
}
int main() {
char src[100]; // 源字符串数组
char dest[50]; // 子串数组
// 提示用户输入源字符串
printf("请输入字符串: ");
gets(src);
// 提示用户输入子串
printf("请输入子串: ");
gets(dest);
// 使用自定义函数查找子串
char *result = my_strstr(src, dest);
if (result) {
printf("子串在字符串中的位置: %ld\n", result - src);
} else {
printf("不包含子串\n", dest);
}
return 0;
}