1> 自定义函数(my_strlen)实现strlen函数的功能
2> 自定义函数(my_strcpy)实现strcpy函数的功能
3> 自定义函数(my_strcmp)实现strcmo函数的功能
4> 自定义函数(my_strcat)实现strcat函数的功能
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#define MAX 100
void my_strlen(const char* arr);
void my_strcpy(char* arr,char* brr);
int my_strcmp(const char* arr,const char* brr);
void my_strcat(char* arr,const char* brr);
int main(int argc, const char *argv[])
{
char arr[MAX] = "";
char brr[MAX] = "";
printf("请输入一个字符串:");
gets(arr);
printf("arr[] = %s\n",arr);
my_strlen(arr);
printf("请输入另外一个字符串:");
gets(brr);
printf("brr[] = %s\n",brr);
int s = my_strcmp(arr,brr);
printf("my_strcmp(arr,brr) = %d\n",s);
my_strcat(arr,brr);
printf("执行my_strcat后:arr[] = %s, brr[] = %s\n",arr,brr);
my_strcpy(arr,brr);
printf("执行my_strcpy后:arr[] = %s, brr[] = %s\n",arr,brr);
return 0;
}
//定义my_strlen函数
void my_strlen(const char* arr)
{
int m = 0;
char n = 0;
while(n = *arr++)
{
if(n!='\0')
{
m++;
}
}
printf("my_strlen[arr] = %d\n",m);
}
//定义my_strcpy函数
void my_strcpy(char* arr,char* brr)
{
char n = 0;
while(n = *brr++)
{
if(n!='\0')
{
*arr++ = n;
}
}
*arr = '\0';
}
//定义my_strcmp函数
int my_strcmp(const char* arr,const char* brr)
{
char m = 0,n = 0;
int i = 0;
while(1)
{
m = *arr++;
n = *brr++;
if(m=='\0'||n=='\0')
break;
if(m > n)
i++;
if(m<n)
i--;
}
if(i>0)
return 1;
if(i<0)
return -1;
if(i==0)
return 0;
}
//定义my_strcat函数
void my_strcat(char* arr,const char* brr)
{
int i = 0,j = 0;
while(arr[i] !='\0')
{
i++;
}
while(brr[j] != '\0')
{
arr[i] = brr[j];
i++;
j++;
}
}
运行结果:
5> 自定义函数(my_strstr)实现求src字符串中是否包含子串dest字符串
代码:
#include <stdio.h>
#include <string.h>
int my_strstr(const char *src, const char *dest) {
if (src == NULL || dest == NULL) {
return -1; // 输入无效
}
const char *s = src;
const char *d = dest;
const char *p = s;
while (*p) {
s = p;
while (*s && *d && *s == *d) {
s++;
d++;
}
if (!*d) {
return (int)(p - src); // 找到子串,返回起始位置
}
d = dest; // 重置子串指针
p++;
}
return -1; // 未找到子串
}
int main() {
const char *src = "Hello, World!";
const char *dest = "World";
int index = my_strstr(src, dest);
if (index >= 0) {
printf("子串在字符串中的起始位置是: %d\n", index);
} else {
printf("字符串中不含有子串.\n");
}
return 0;
}
运行结果:
思维导图: