主函数:
#include"head.h"
int main(int argc, const char *argv[])
{
int n = 20;
char *p = create(n);
char *q = create(n);
input(p);
input(q);
int len1 = my_strlen(p);
int len2 = my_strlen(q);
my_strcat(p,q);
Bubble(p);
rev(p);
puts(p);
p = free_space(p);
q = free_space(q);
return 0;
}
头文件:
#ifndef N
#define N
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#endif
char *create(int n);
void input(char *p);
size_t my_strlen(const char *p);
void my_strcat(char *p,const char *q);
void Bubble(char *p);
void rev(char *p);
char *free_space(char *p);
自定义:
#include"head.h"
/*
* function: 申请一定长度的字符空间
* @param [ in] 长度n
* @param [out] 堆区存储空间的地址
* @return 有返回值返回指针
*/
char *create(int n)
{
char *p = (char *)malloc(sizeof(char)*n);
if(p == NULL)
return NULL;
return p;
}
/*
* function: 输入字符串函数
* @param [ in] 地址
* @param [out] 无
* @return 无参数函数
*/
void input(char *p)
{
printf("请输入一串字符串:");
scanf("%s",p);
}
/*
* function: 输出字符串长度函数
* @param [ in] 字符指针
* @param [out] 无符号整形常量
* @return
*/
size_t my_strlen(const char *p)
{
size_t len = 0;
while(*p)
{ len++;
p++;
}
return len;
}
/*
* function: 字符串连接函数
* @param [ in] 两个字符串指针
* @param [out] 无
* @return 无返回值函数
*/
void my_strcat(char *p,const char *q)
{
strcpy(p + my_strlen(p), q);
}
/*
* function: 冒泡排序函数
* @param [ in] 字符地址
* @param [out]
* @return 无返回值
*/
void Bubble(char *p)
{
int i ,j ;
size_t len = my_strlen(p);
char temp;
for(i = 1;i < len ;i++)
{
for(j = 0; j <len - i ; j++)
{
if(*(p + j)>*(p+j+1))
{
temp = *(p+j);*(p+j) = *(p+j+1);*(p+j+1) = temp ;
}
}
}
}
/*
* function: 逆置函数
* @param [ in] 字符地址
* @param [out]
* @return 无返回值
*/
void rev(char *p)
{
size_t len = my_strlen(p);
int i = 0;
char temp;
char *q = p + len - 1;
for(i = 0; i < len/2 ; i++)
{
temp = *p;*p = *q;*q = temp;
p++; q--;
}
}
/*
* function: 释放空间
* @param [ in] 字符指针
* @param [out] 空地址
* @return 返回空地址
*/
char *free_space(char *p)
{
if(p == NULL)
return NULL;
free(p);
return p;
}
运行:
请输入一串字符串:1234
请输入一串字符串:qwer
wrqe4321