自定义实现函数mystrlen
运行结果
代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int fun_len(char *p){ //定义指针获取数组
int i = 0;
int count = 0;
for(i=0;p[i]!='\0';i++){ //遍历数组
count++; //有字符就加一
}
return count; //返回字符个数
}
int main(int argc, const char *argv[])
{
char s[]={0}; //初始化数组
printf("输入字符串:");
gets(s); //从终端获取字符串
int c = fun_len(s); //执行有返回值的函数
printf("长度为:%d\n",c); //输出返回值
return 0;
}
自定义实现mystrcmp
运行结果
代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int mystrcmp(char *p,char *q){
int i = 0;
int j = 0;
while(p[i]==q[j]){ //如果字符相等进入循环
i++;
j++;
if(p[i]=='\0'){ //防止死循环一直'\0'
break;
}
}
return p[i]-q[j]; //不相等时,返回当前两个字符的ascii差值
}
int main(int argc, const char *argv[])
{
char s1[128]={0};
char s2[128]={0};
gets(s1);
gets(s2);
int c=mystrcmp(s1,s2);
if(c<0){ //比较返回的差值
printf("s1<s2\n");
}else if(c==0){
printf("s1=s2\n");
}else{
printf("s1>s2\n");
}
return 0;
}
自定义实现mystrcat
运行结果
代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char *mystrcat(char *p,char*q){ //接收函数
int i = 0;
int j = 0;
while(p[i]!='\0'){ //获取第一个数组的'\0'
i++;
}
//此时i为'\0'下标
while(q[j]!='\0'){//从第一个字符串的'\0'开始覆盖
p[i]=q[j];
i++;
j++;
}
//此时j的下标为'\0'
p[i]=q[j]; //把第二个字符串的'\0'赋值给第一个字符串
return p;
}
int main(int argc, const char *argv[])
{
char arr[128]={0};
char brr[128]={0}; //初始化
gets(arr);
gets(brr); //从终端获取字符串
char* c=mystrcat(arr,brr); //执行函数
printf("%s\n", c);
return 0;
}
自定义实现strcpy
运行结果
代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char *mystrcpy(char *p,char *q){ //接收地址
int i = 0;
int j = 0;
while(q[j]!='\0'){ //将第二个字符串全赋值给第一个字符串
p[i]=q[j];
i++;
j++;
}
p[i]=q[j]; //将'\0'也赋值给第一个字符串
return p; //返回地址
}
int main(int argc, const char *argv[])
{
char arr[128]={0};
char brr[128]={0}; //初始化
printf("第一个字符串:");
gets(arr);
printf("第二个字符串:");
gets(brr); //获取字符串
char *c=mystrcpy(arr,brr); //执行函数
printf("最终字符串为:%s\n",c); //输出
return 0;
}