2023.3.27 数据结构

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>调用函数释放空间

// 文件
// 宏定义
// 函数声明
// 全局变量

#ifndef N;  //防止重复定义
#define N;

#include<string.h>
#include<stdio.h>
#include<stdlib.h>


char *create();//堆区申请空间
void input(char *p);//输出字符串
size_t my_strlen(const char *p);//计算字符串长度
char *my_strcat(const char *dest,const char *src);//字符串连接
void Bubble(char *s);//冒泡排序
void reversestr(char *p);//字符串逆置
char *free_speac(char *p);//调用函数释放空间

#endif
//主要函数部分
#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("q:%d\n",my_strlen(q));

	//字符串连接
	my_strcat(p,q);
	printf("%s\n",p);

	//冒泡排序
	Bubble(p);
	printf("%d\n",p);

	//字符串逆置
	reversestr(p);
	printf("%d\n",p);

	//释放空间
	p=free_speac(p);
	q=free_speac(q);
	
	return 0;
}
//主要用来储存自定义函数

#include "head.h"

//堆区申请空间
char *create()
{
	char *p=(char *)malloc(sizeof(char)*20);
	if (p==NULL)
		return NULL;
	return p;
}

//输入字符串
void input(char *p)
{
	printf("请输入字符串");
	scanf("%s",p);
}

//计算字符串长度
size_t my_strlen(const char *p)
{
	assert(p!=NULL) ;//判断p是否为空指针
	int count=0;
	while(*p!='\0')
	{
		count++;
		p++;
	}
	return count;
}

//字符串连接
char *my_strcat(const char *dest,const char *src)
{

{ 
	char *p=dest;
	while(*dest)
		dest++;
	while(*src)
	{ 
		*dest=*src;
		dest++;
		src++;
	}
	*dest='\0';
	return p;
}

//冒泡排序
void Bubble(char *s)
{
	int i ,j ;
	for(i=0;i<my_strlen(s);i++)
		for(j=0;j<my_strlen-i;j++)
			if(*(s+j)>*(s+j+1))
			{
				int temp=*(s+j);
				*(s+j)=*(s+j+1);
				*(s+j+1)=temp;
			}
}

//字符串逆置
void reversestr(char *p)
{
	int i;
	int len =my_strlen(p);
	char temp;

	for (i=0;i<len/2;i++)
	{
		temp=p[i];
		p[i]=p[len-1-i];
		p[len-1-i]=temp;
	}
}

//调用函数释放空间
char *free_speac(char *p)
{
	if(p==NULL)
		return NULL;
	free(p);
	p=NULL;
	return p;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值