#include<stdio.h>
#define ANum1 285
#define ANum2 3500
//    printf(" %d %c \n", (int)'a', (char)123);//字符查看ASCⅡ表
//    printf(" %d %d \n", (int)"我"[0], (int)"我"[1]);//汉字查看ASCⅡ表
//《构造函数部分》
// Small_Num 求较小函数 求两个整型数据中较小的一个,返回值为较小的数
int Small_Num(int Num1, int Num2)
{
    if(Num1 > Num2)
        return Num2;
    else
        return Num1;
}
// Bige_Num 求较大函数 求两个整型数据中较大的一个,返回值为较大的数
int Bige_Num(int Num1, int Num2)
{
    if(Num1 > Num2)
        return Num1;
    else
        return Num2;
}
// Str_Len 求字符串求长函数 求任意长度字符串 或 指针指向的字符串 的字符串长度,返回值为字符数加1(即字符串长度)
int Str_Len(char Str2[])
{
    int i = 0;
    while(Str2[i] != 0)                                    //求长原理字符串最后以0 结尾,统计不为0,直到为0 时即可
        i++;
    return i + 1;
}
// Arr_Len 求字符串数组元素个数的函数,返回值为字符串数
int Arr_Len(char Str2[][ANum1])                            //求元素个数要求数组中不能含有空串,该函数只统计到出现空串为止,另外数组的外层参数ANum1必须给出且与数组相同
{
    int i = 0;
    while(Str2[i][0] != 0)                                //求长原理字符串第一位不为0,统计不为0,直到为0 时即可
        i++;
    return i-1;
}
// char-> int 转换, s[]为待转换成数字的数字字符串,一个参数时将s[]转换成十进制数,Str_Len为数字位数
int Char_Int(char s[])
{
    int Total = 0;
    for(int i = 0; i < Str_Len(s)-1; i++)                // Str_Len 求字符串求长函数,也可将函数定义成Char_Int(char s[],int Num)将Str_Len(s)改为Num即可
    {
        int Tmp = s[i]-48;                                //Tmp用于存储字符串各个字节处转换后的的数字s[i]-48,转换前该字节处用s[i]表示该数字字符
        Total = Total * 10 +Tmp;                        //将各位数字字合成字符所表示的数据
    }
    return Total;                                        //返回数字处理后得到的数字
}
/
/ char-> int 转换, s[]为待转换成数字的数字字符串,两个参数时将s[]转换成Num进制数并以十进制输出,Str_Len为数字位数
int Char_Int(char s[], int Num)
{
    int Total = 0;
    for(int i = 0; i < Str_Len(s)-1; i++)                // Str_Len 求字符串求长函数,也可将函数定义成Char_Int(char s[],int Num)将Str_Len(s)改为Num即可
    {
        int Tmp = s[i]-48;                                //Tmp用于存储字符串各个字节处转换后的的数字s[i]-48,转换前该字节处用s[i]表示该数字字符
        Total = Total * Num +Tmp;                        //将各位数字字合成字符所表示的数据
    }
    return Total;                                        //返回数字处理后得到的数字
}
// int-> char 转换,  char s[]为有足够长度的字符串,用于存储数字生成的字符串
char * Int_Char( int n, char s[])
{
    int Tmp_n = n,Length = 0;
    while(Tmp_n >= 1)                                    //求出待转换成字符的 数字的长度Length
    {
        Length++;
        Tmp_n /= 10;                                    //依次除10直到小于1退出循环
    }
    for(int i=0; i<Length; i++)
    {
        Tmp_n = n%10;                                    //对待转换的数字各位依次取余数,存入Tmp_n中
        n /= 10 ;                                        //对待转换的数字依次去尾数,以便下一次取余数
        s[Length-1-i] = Tmp_n + 48;                        //将各位数字 依次转换成对应 数字字符 所对应的数字(即Tmp_n + 48),再存入字符串的相应位置(即s[Length-1-i]
    }
    s[Length] = 0;                                        //位数字字符串 设尾
    return s;                                            //返回生成的数字字符串
}
/
/ Str_Cpy 字符串拷贝函数,将字符串从源字符串Str2拷贝到目标字符串Str1,返回值Str1所对应的字符串
char * Str_Cpy(char Str1[], const char Str2[])
{
    int i = 0;
    while(Str2[i] != 0)
    {
        Str1[i] = Str2[i];
        i++;
    }
    Str1[i] = 0;
    return Str1;
}
// Str_Cpy 字符串拷贝函数,从源字符串Str1中拷贝前Num个字符串Str2中,返回值Str2所对应的字符串
char * Str_Cpy(const char Str1[], int Num, char Str2[])
{
    int i = 0;
    while(Str1[i] != 0 && i<Num)
    {
        Str2[i] = Str1[i];
        i++;
    }
    Str2[i] = 0;
    return Str2;
}
// Str_Cpy 字符串拷贝函数,从Str1第Num1个字符的位置开始,拷贝Num2个字符到Str2中,返回值Str2所对应的字符串
char * Str_Cpy(const char Str1[], int Num1, int Num2, char Str2[])
{
    int i = 0;
    while(Str1[i] != 0 && i<Num2)
    {
        Str2[i] = Str1[i+Num1-1];
        i++;
    }
    Str2[i] = 0;
    return Str2;
}
//使得Str的长度变为Len的整数倍不足部分添加空格
char * Str_Chg(char Str[], int Len)
{
    int i, LenS=Str_Len(Str);
    if((LenS%Len) !=0 )                                    //对字符串进行处理使得Str的长度为Len的整数倍
    {
        for(i=LenS-1; i < ((LenS/Len + 1) * Len)-1; i++)
            Str[i]=' ';
        Str[i]=0;
    }
    return Str;
}
//字符串str2加空格添加函数,添加至str1的尾部
char * str_add(char str1[], char str2[])
{
    int i = 0, j = 0;
    while(str1[i] != 0) i++;                            //当str1到达尾部时
    str1[i++] = ' ';                                    //将结尾改为空格
    while(str2[j] != 0)                                    //并将str2非结尾部分添加至str1后
    {
        str1[i] = str2[j];
        i++;
        j++;
    }
    str1[i] = 0;                                        //为str1添加结尾
字符串比较函数实现
    return str1;
}
// Str_Add 将字符串Str2添加到字符串Str1的尾部
char * Str_Add(char Str1[], char Str2[] )                // 须包含Str_Len 求字符串长函数,需给Str1分配内存空间,例:char str[50]="apple"; Str_Add(str, " banana"));
{
    int Num=Str_Len(Str1)-1;
    for(int i=Str_Len(Str1); i > Num; i--)
        Str1[(i-1)+(Str_Len(Str2)-1)] = Str1[i-1];        //将字符串1的第i-1个字符向后移动字符串Str2个字符数
    for(i=0; i < Str_Len(Str2)-1; i++ )
        Str1[Num+i]=Str2[i];
    return Str1;
}
// Str_Add 将字符串Str2添加到字符串Str1 从左向右(0 1 2 3……)第Num处,Num=0时添加到第一个字符串前,
//Num=StrLen(Str1)-1添加到第一个字符串末尾,倒数第四个位置为StrLen(Str1)-5
char * Str_Add(char Str1[], int Num, char Str2[] )
{
    for(int i=Str_Len(Str1); i > Num; i--)                //须包含Str_Len 求字符串长函数
        Str1[(i-1)+(Str_Len(Str2)-1)] = Str1[i-1];        //将字符串1的第i-1个字符向后移动字符串Str2个字符数
    for(i=0; i < Str_Len(Str2)-1; i++ )
        Str1[Num+i]=Str2[i];
    return Str1;
}
// Str_Cmp_Min 字符串比较函数(按字母表的顺序)比较两个字符串的大小,输出较小的字符串对应的数字
//返回值1表示字符串Str1较小;返回值2字符串Str1较小;返回0时两个字符串相同
int Str_Cmp_Min(char Str1[], char Str2[])                //需包含构造函数Small_Num、Str_Len
{
    int CM_i = Small_Num(Str_Len(Str1), Str_Len(Str2));    //取较短的字符串长度进行比较,(即比较至字符长度的后一位
    for(int i = 0; i < CM_i; i++)                        //CM_i: Circulate Max Number i
    {
        if(Str1[i] == Str2[i])                            //如果字符串的第一个字符相同
            i++;                                        //则跳过上一个字符
        if(Str1[i] > Str2[i])                            //比较字符串的第二个字符

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。