仿照str系列函数,完成自定义的mystrlen 、mystrcmp、mystrcpy,mystrcat、
mystrlen
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int mystrlen(char *b);
int mystrlen(char *b){
int len=0;
for(len=0; b[len] != '\0'; len++);
return len;
}
int main(int argc, const char *argv[])
{
char arr[100]={0};
printf("请输入一串字符串:");
gets(arr);
int ret=mystrlen(arr);
printf("字符串的长度为:%d\n", ret);
return 0;
}
mystrcmp
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int mystrcmp(char*a , char*b);
int mystrcmp(char*a , char*b){
int i,j=0;
for(i=0,j=0; a[i] == b[j] ; i++,j++){
if(a[i]==b[j]){
return a[i]-b[j];
}
}
return a[i]-b[j];
}
int main(int argc, const char *argv[])
{
char arr[100];
char brr[100];
printf("请分别输入两个字符串\n");
gets(arr);
gets(brr);
int ret=mystrcmp(arr, brr);
if(ret>0){
printf("数组arr大\n");
}else if(ret==0){
printf("数组一样大\n");
}else{
printf("数组brr大\n");
}
return 0;
}
mystrcpy
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
char *mystrcpy(char *a, char *b);
char *mystrcpy(char *a, char *b){//将字符串2复制到字符串1
int i,j;
for(i=0,j=0; b[i]!='\0'; i++,j++){
a[i]=b[j];
}
a[i]=b[j];
return a; //返回的是生命周期长的变量的地址
}
int main(int argc, const char *argv[])
{
char arr[100]; //存放输入的连个字符串
char brr[100];
printf("请分别输入两个字符串:");
gets(arr);
gets(brr);
char *c = mystrcpy(arr, brr);
printf("复制后的字符串为:");
puts(c);
return 0;
}
mystrcat、
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
char *mystrcat(char *a, char *b);
char *mystrcat(char *a, char *b){//将字符串2复制到字符串1
int i=0,j=0; //变量一定要初始化
while(a[i]!='\0'){
i++;
}
for(i,j=0; b[j]!='\0'; i++,j++){
a[i]=b[j];
}
a[i]='\0'; //将第二个字符串的\0赋值给第一个字符串
return a; //返回的是生命周期长的变量的地址
}
int main(int argc, const char *argv[])
{
char arr[100]; //存放输入的连个字符串,这里默认两字符串拼接后也小于100
char brr[100];
printf("请分别输入两个字符串:");
gets(arr);
gets(brr);
char *c = mystrcat(arr, brr);
printf("连接后的字符串为:");
puts(c);
return 0;
}