作业:多文件编译
1.在堆区申请2个字符类型的大小为20字节的空间。
1>定义函数,实现在堆区申请空间
2>定义函数,输入两个字符串
3>定义函数,计算两个字符串的长度[非函数]
sizeof_ t my_ strlen(const char *s1) //注意: sizeof_ _t是unsigned int的别名
4>定义函数,实现字符串连接
char *my_ strcat(const char *dest,const char *src)
5>定义函数,实现连接后字符串的冒泡排序[ 是对字符串的每一个字符进行排序]
void Bubble(char *s)
6>实现字符串逆置
7>调用函数释放空间
1、head.h
#ifndef N
#define N
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *creat();
char input(char *p);
int my_strlen(const char *s1);
char *my_strcat(char *dest,const char *src);
void Bubble(char *s);
void inverse(char *p);
char *my_free(char *p);
#endif
2、main.c
#include"head.h"
int main(int argc, const char *argv[])
{
char *p=creat();
char *q=creat();
printf("请输入一个字符串:");
input(p);
printf("请输入另一个字符串:");
input(q);
int len1=my_strlen(p);
int len2=my_strlen(q);
char *r=my_strcat(p,q);
printf("%s\n",r);
Bubble(r);
printf("%s\n",r);
inverse(r);
printf("%s\n",r);
r=my_free(r);
q=my_free(q);
return 0;
}
3、text.c
#include"head.h"
char *creat()
{
char *p=(char *)malloc(sizeof(char)*20);
if(p==NULL)
return NULL;
return p;
}
char input(char *p)
{
gets(p);
}
int my_strlen(const char *s1)
{
int count=0;
while(*s1!='\0')
{
s1++;
count++;
}
return count;
}
char *my_strcat( char *dest,const char *src)
{
int len1=my_strlen(dest);
int len2=my_strlen(src);
for(int i=0;i<len2;i++)
{
dest[i+len1]=src[i];
}
return dest;
}
void Bubble(char *s)
{
int len=my_strlen(s);
char temp;
for(int i=1;i<len;i++)
{
for(int j=0;j<len-i;j++)
{
if(s[j]>s[j+1])
{
temp=s[j];s[j]=s[j+1];s[j+1]=temp;
}
}
}
}
void inverse(char *p)
{
int len=my_strlen(p);
char temp;
for(int i=0;i<len/2;i++)
{
temp=p[i];p[i]=p[len-1-i];p[len-1-i]=temp;
}
}
char *my_free(char *p)
{
if(p==NULL)
{
return NULL;
}
free(p);
p=NULL;
return p;
}