1.思维导图
2.在堆区申请两个长度为32的空间,实现两个字符串的比较【非库函数实现】
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void my_strcmp(char*p,char*q)
{
char*a=p;
char*b=q;
while(*a==*b)
{
if(*a=='\0')
break;
a++;
b++;
}
if(*a>*b)
printf("a>b\n");
if(*a<*b)
printf("a<b\n");
if(*a==*b)
printf("a=b\n");
}
int main(int argc, const char *argv[])
{
char *p = (char*)malloc(32*2);
char a[100]="";
char b[100]="";
scanf("%s",a);
scanf("%s",b);
my_strcmp(a,b);
free(p);
p=NULL;
return 0;
}
3.定义函数,在对区申请空间
两个申请,主函数需要调用2次
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *Create(int*p,int m)
{
p=(char*)malloc(sizeof(char)*m);
return p;
}
int main(int argc, const char *argv[])
{
int m; //要申请的空间大小
scanf("%d",&m);
char*p=NULL;
char*q=NULL;
p=Create(p,m);
q=Create(q,m);
free(p);
free(q);
p=NULL;
q=NULL;
return 0;
}
4. 定义函数,实现字符串的输入
void input(char *p)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void input(char *p)
{
gets(p);
puts(p);
}
int main(int argc, const char *argv[])
{
char a[200]="";
input(a);
return 0;
}
5.调用函数实现字符串比较,在主函数中输出大小
int my_strcmp(const char *s1,const char *s2)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int my_strcmp(const char*s1,const char*s2)
{
int i = 0;
while(s1[i] == s2[i] && s1[i] != 0 && s2[i] != 0)
{
i++;
}
return s1[i] - s2[i];
}
int main(int argc, const char *argv[])
{
char *p = (char*)malloc(32*2);
char a[100]="";
char b[100]="";
scanf("%s",a);
scanf("%s",b);
if(my_strcmp(a,b)<0)
printf("a<b");
if(my_strcmp(a,b)>0)
printf("a>b");
if(my_strcmp(a,b)==0)
printf("a=b");
free(p);
p=NULL;
return 0;
}
6.定义函数,释放空间
void Free(char *p)
14 {
15 free(p);
16 }
Free(p);