1.在堆区申请2个字符类型的大小为20字节的空间。
1>定义函数,实现在堆区申请空间
2>定义函数,输入两个字符串
3>定义函数,计算两个字符串的长度【非函数】
4>定义函数,实现字符串连接
5>定义函数,实现连接后字符串的冒泡排序【是对字符串的每一个字符进行排序】
6>实现字符串逆置
7>调用函数释放空间
运行结果
代码
主函数
#include "head.h"
int main(int argc, const char *argv[])
{
//在堆区申请空间
char *p=create();
char *q=create();
//输入函数
printf("输入第一个字符串:");
input(p);
printf("输入第二个字符串:");
input(q);
//计算字符串长度
int countp=my_stren(p);
printf("第一个字符串实际长度为%d\n",countp);
int countq=my_stren(q);
printf("第二个字符串实际长度为%d\n",countq);
//连接函数
char *cat=my_strcat(p,q);
printf("%s\n",cat);
printf("%s\n",p);
printf("%s\n",q);
//冒泡排序
Bubble(p);
Bubble(q);
//逆置
my_nizhi(p);
my_nizhi(q);
//释放空间
p=free_space(p);
q=free_space(q);
return 0;
}
头文件
```c
#ifndef N
#define N
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char *create();
void input(char *p);
int my_stren(const char *s1);
char *my_strcat(const char *dest,const char *src);
void Bubble(char *s);
void my_nizhi(char *p);
char *free_space(char *p);
#endif
函数段
```c
#include "head.h"
char *create()
{
char *p=(char *)malloc(sizeof(char)*20);
if(p==NULL)
return NULL;
return p;
}
void input(char *p)
{
scanf("%s",p);
}
int my_stren(const char *s1)
{
int count = 0;
while(*s1!='\0'){
s1++;
count++;
}
return count;
}
char *my_strcat(const char *dest,const char *src)
{
int i = 0;
char arr[128]={0};
while(*dest!='\0'){
arr[i]=*dest;
dest++;
i++;
}
arr[i]=*dest;
int j=0;
char brr[128]={0};
while(*src!='\0'){
brr[j]=*src;
src++;
j++;
}
brr[j]=*src;
j=0;
while(brr[j]!='\0'){
arr[i]=brr[j];
i++;
j++;
}
arr[i]=brr[j];
char *k=arr;
return k;
}
void Bubble(char *s)
{
int i = 0;
int j = 0;
char temp;
int len=strlen(s);
for(i=1;i<len;i++){
for(j=0;j<len-i;j++){
if(s[j]>s[j+1]){
temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
}
}
printf("升序排列为:%s\n",s);
}
void my_nizhi(char *p)
{
int len=strlen(p);
int i = 0;
char temp;
for(i=0;i<len/2;i++){
temp=p[i];
p[i]=p[len-1-i];
p[len-1-i]=temp;
}
printf("逆置后为:%s\n",p);
}
char *free_space(char *p)
{
if(p==NULL)
return NULL;
free(p);
p=NULL;
return p;
}