1> 思维导图
2> 在堆区申请两个长度为32的空间,实现两个字符串的比较【非库函数实现】
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char* p1=(char*)malloc(32);
printf("please enter p1:");
gets(p1);
char* p2=(char*)malloc(32);
printf("please enter p2:");
gets(p2);
for(int i=0;p1[i]!='\0';i++)
{
if(p1[i]!=p2[i])
{
int s=p1[i]-p2[i];
if(s>0)
printf("%s>%s",p1,p2);
else if(s<0)
printf("%s<%s",p1,p2);
else
printf("%s=%s",p1,p2);
break;
}
}free(p1);
free(p2);
p1=NULL;
P2=NULL;
return 0;
}
1> 定义函数,在堆区申请空间
两个申请,主函数需要调用2次
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int* fun(int* p)
{
p=(int*)malloc(4);
return p;
}
int main(int argc, const char *argv[])
{
int* p=NULL;
p=fun(p);
free(p);
p=NULL;
p=fun(p);
free(p);
p=NULL;
return 0;}
2> 定义函数,实现字符串的输入
void input(char *p)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void input(char *p)
{
printf("please enter p:");
scanf("%s",p);
}
int main(int argc, const char *argv[])
{
char str[20]="";
input(str);
puts(str);
return 0;
}
3> 调用函数实现字符串比较,在主函数中输出大小
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 n=strcmp(s1,s2);
return n;
}
int main(int argc, const char *argv[])
{
char s1[20]="",s2[20]="";
printf("please enter s1:");
gets(s1);
printf("please enter s2:");
gets(s2);
int n=my_strcmp(s1,s2);
if(n<0)
printf("%s<%s",s1,s2);
else if(n>0)
printf("%s>%s",s1,s2);
else
printf("%s=%s",s1,s2);
return 0;
}
4> 定义函数,释放空间
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void my_free(int* p)
{
free(p);
p=NULL;
}
int main(int argc, const char *argv[])
{
int* p=(int*)malloc(sizeof(int));
my_free(p);
return 0;
}