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> 调用函数释放空间
t
#include "head.h"
int main(int argc, const char *argv[])
{
char *p=create();
char *q=create();
input(p);
input(q);
printf("p:%d\n",my_strlen(p));
printf("p:%d\n",my_strlen(q));
my_stract(p,q);
printf("p:%s\n",p);
Bubble(p);
printf("p:%s\n",p);
nizhuan(p);
printf("p:%s\n",p);
p=free_space(p);
q=free_space(q);
return 0;
}
主函数
#include "head.h"
int main(int argc, const char *argv[])
{
char *p=create();
char *q=create();
input(p);
input(q);
printf("p:%d\n",my_strlen(p));
printf("p:%d\n",my_strlen(q));
my_stract(p,q);
printf("p:%s\n",p);
Bubble(p);
printf("p:%s\n",p);
nizhuan(p);
printf("p:%s\n",p);
p=free_space(p);
q=free_space(q);
return 0;
}
自定义函数
#include "head.h"
//在堆区申请空间
char *create()
{
char *p=(char *)malloc(20);
if (p==NULL)
return NULL;
return p;
}
//输入字符串
void input(char *p)
{
printf("请输入一个字符串");
scanf("%s",p);
}
//计算字符串长度
sizeof_t my_strlen(const char *s1)
{
int i=0;
while(*(s1+i)!='\0')
i++;
return i;
}
//字符串连接
char * my_stract( char *dest,const char *scr)
{
int i=my_strlen(dest);
for(i;*scr!='\0';scr++,i++)
*(dest+i)=*scr;
*(dest+i)='\0';
return dest;
}
//字符串的冒泡排序
void Bubble(char *s)
{
int i=0,j=0;
for(i=1;i<my_strlen(s);i++)
for(j=0;j<my_strlen(s)-i;j++)
if(*(s+j)>*(s+j+1))
{
*(s+j)^=*(s+j+1);
*(s+j+1)^=*(s+j);
*(s+j)^=*(s+j+1);
}
}
//字符串逆转
void nizhuan(char *p)
{
int i=0,j=my_strlen(p)-1;
for(i=0;i<j;i++,j--)
{
*(p+i)^=*(p+j);
*(p+j)^=*(p+i);
*(p+i)^=*(p+j);
}
}
//释放空间
char *free_space(char *p)
{
if (p==NULL)
return NULL;
free(p);
p=NULL;
return p;
}
ubuntu@ubuntu:327.c$ gcc *.c
ubuntu@ubuntu:327.c$ ./a.out
请输入一个字符串3253534
请输入一个字符串sdrgdfg
p:7
p:7
p:3253534sdrgdfg
p:2333455ddfggrs
p:srggfdd5543332