C语言C++ 字符串处理函数集合更新Word下载.docx

上传人:b****5 文档编号:21141203 上传时间:2023-01-27 格式:DOCX 页数:41 大小:31.50KB
下载 相关 举报
C语言C++ 字符串处理函数集合更新Word下载.docx_第1页
第1页 / 共41页
C语言C++ 字符串处理函数集合更新Word下载.docx_第2页
第2页 / 共41页
C语言C++ 字符串处理函数集合更新Word下载.docx_第3页
第3页 / 共41页
C语言C++ 字符串处理函数集合更新Word下载.docx_第4页
第4页 / 共41页
C语言C++ 字符串处理函数集合更新Word下载.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

C语言C++ 字符串处理函数集合更新Word下载.docx

《C语言C++ 字符串处理函数集合更新Word下载.docx》由会员分享,可在线阅读,更多相关《C语言C++ 字符串处理函数集合更新Word下载.docx(41页珍藏版)》请在冰豆网上搜索。

C语言C++ 字符串处理函数集合更新Word下载.docx

intStr_Len(charStr2[])

inti=0;

while(Str2[i]!

=0)//求长原理字符串最后以0结尾,统计不为0,直到为0时即可

i++;

returni+1;

//Arr_Len求字符串数组元素个数的函数,返回值为字符串数

intArr_Len(charStr2[][ANum1])//求元素个数要求数组中不能含有空串,该函数只统计到出现空串为止,另外数组的外层参数ANum1必须给出且与数组相同

while(Str2[i][0]!

=0)//求长原理字符串第一位不为0,统计不为0,直到为0时即可

returni-1;

//char->

int转换,s[]为待转换成数字的数字字符串,一个参数时将s[]转换成十进制数,Str_Len为数字位数

intChar_Int(chars[])

intTotal=0;

for(inti=0;

i<

Str_Len(s)-1;

i++)//Str_Len求字符串求长函数,也可将函数定义成Char_Int(chars[],intNum)将Str_Len(s)改为Num即可

{

intTmp=s[i]-48;

//Tmp用于存储字符串各个字节处转换后的的数字s[i]-48,转换前该字节处用s[i]表示该数字字符

Total=Total*10+Tmp;

//将各位数字字合成字符所表示的数据

}

returnTotal;

//返回数字处理后得到的数字

int转换,s[]为待转换成数字的数字字符串,两个参数时将s[]转换成Num进制数并以十进制输出,Str_Len为数字位数

intChar_Int(chars[],intNum)

Total=Total*Num+Tmp;

//int->

char转换,chars[]为有足够长度的字符串,用于存储数字生成的字符串

char*Int_Char(intn,chars[])

intTmp_n=n,Length=0;

while(Tmp_n>

=1)//求出待转换成字符的数字的长度Length

Length++;

Tmp_n/=10;

//依次除10直到小于1退出循环

for(inti=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;

//位数字字符串设尾

returns;

//返回生成的数字字符串

//Str_Cpy字符串拷贝函数,将字符串从源字符串Str2拷贝到目标字符串Str1,返回值Str1所对应的字符串

char*Str_Cpy(charStr1[],constcharStr2[])

=0)

Str1[i]=Str2[i];

Str1[i]=0;

returnStr1;

//Str_Cpy字符串拷贝函数,从源字符串Str1中拷贝前Num个字符串Str2中,返回值Str2所对应的字符串

char*Str_Cpy(constcharStr1[],intNum,charStr2[])

while(Str1[i]!

=0&

&

Num)

Str2[i]=Str1[i];

Str2[i]=0;

returnStr2;

//Str_Cpy字符串拷贝函数,从Str1第Num1个字符的位置开始,拷贝Num2个字符到Str2中,返回值Str2所对应的字符串

char*Str_Cpy(constcharStr1[],intNum1,intNum2,charStr2[])

Num2)

Str2[i]=Str1[i+Num1-1];

//使得Str的长度变为Len的整数倍不足部分添加空格

char*Str_Chg(charStr[],intLen)

inti,LenS=Str_Len(Str);

if((LenS%Len)!

=0)//对字符串进行处理使得Str的长度为Len的整数倍

for(i=LenS-1;

((LenS/Len+1)*Len)-1;

Str[i]='

'

;

Str[i]=0;

returnStr;

//字符串str2加空格添加函数,添加至str1的尾部

char*str_add(charstr1[],charstr2[])

inti=0,j=0;

while(str1[i]!

=0)i++;

//当str1到达尾部时

str1[i++]='

//将结尾改为空格

while(str2[j]!

=0)//并将str2非结尾部分添加至str1后

str1[i]=str2[j];

j++;

str1[i]=0;

//为str1添加结尾

returnstr1;

//Str_Add将字符串Str2添加到字符串Str1的尾部

char*Str_Add(charStr1[],charStr2[])//须包含Str_Len求字符串长函数,需给Str1分配内存空间,例:

charstr[50]="

apple"

Str_Add(str,"

banana"

));

intNum=Str_Len(Str1)-1;

for(inti=Str_Len(Str1);

i>

Num;

i--)

Str1[(i-1)+(Str_Len(Str2)-1)]=Str1[i-1];

//将字符串1的第i-1个字符向后移动字符串Str2个字符数

for(i=0;

Str_Len(Str2)-1;

i++)

Str1[Num+i]=Str2[i];

//Str_Add将字符串Str2添加到字符串Str1从左向右(0123……)第Num处,Num=0时添加到第一个字符串前,

//Num=StrLen(Str1)-1添加到第一个字符串末尾,倒数第四个位置为StrLen(Str1)-5

char*Str_Add(charStr1[],intNum,charStr2[])

i--)//须包含Str_Len求字符串长函数

//Str_Cmp_Min字符串比较函数(按字母表的顺序)比较两个字符串的大小,输出较小的字符串对应的数字

//返回值1表示字符串Str1较小;

返回值2字符串Str1较小;

返回0时两个字符串相同

intStr_Cmp_Min(charStr1[],charStr2[])//需包含构造函数Small_Num、Str_Len

intCM_i=Small_Num(Str_Len(Str1),Str_Len(Str2));

//取较短的字符串长度进行比较,(即比较至字符长度的后一位

CM_i;

i++)//CM_i:

CirculateMaxNumberi

if(Str1[i]==Str2[i])//如果字符串的第一个字符相同

i++;

//则跳过上一个字符

if(Str1[i]>

Str2[i])//比较字符串的第二个字符

{

return2;

i=CM_i-1;

}

if(Str1[i]<

Str2[i])

return1;

return0;

//有返回的值函数return0必需为最外层返回才有效

//判断str2是否是str1的子串,str2必须从str1的第一位开始

intstr_inc(charstr1[],charstr2[])

while(str2[i]!

=0)//当str2未至结尾时

if(str2[i]!

=str1[i])return0;

//当两字符串对应字符不相同时,返回0

if(str2[++i]==0)return1;

//当str2至结尾时,返回1

//Str_Inc两个参数的stringinclude函数用于判断字符串Str1中是否含有字符串Str2,包含几个返回值就为几,返回CountS2的值

intStr_Inc(charStr1[],charStr2[])//需包含构造函数Str_Len

intCountL,CountS2=0;

//CountL用于统计字符串长度是否达到Str2的长度,CountS2用于计数与Str2相同的字符串个数

Str_Len(Str1)-1;

intk=i;

if(Str1[i]==Str2[0])//当第一个字符串相同时开始进一步比较剩下几位是否相同

CountL=1;

for(intj=1;

j<

j++)

if(Str1[++k]==Str2[j])

CountL++;

else

CountL=0;

//对CountL进行清零操作避免CountS2统计出错

if(CountL==Str_Len(Str2)-1)//当剩下几位也相同时即含有与Str2相同的部分

CountS2++;

//统计个数

returnCountS2;

//Str_Inc_NoDif不区分大小写的字符比较函数两个参数的stringinclude函数用于判断字符串Str1中是否含有字符串Str2,包含几个返回值就为几,返回CountS2的值

intStr_Inc_NoDif(charStr1[],charStr2[])//需包含构造函数Str_Len

charTmp1[ANum1],Tmp2[ANum1];

Str_Cpy(Tmp1,Str1);

Str_Cpy(Tmp2,Str2);

Str_Len(Tmp1)-1;

intk=i,j;

if(Tmp1[i]<

97)Tmp1[i]+=32;

//不区分大小写时,将大写全部转换成小写,进行比较

if(Tmp2[0]<

97)Tmp2[0]+=32;

if(Tmp1[i]==Tmp2[0])//当第一个字符串相同时开始进一步比较剩下几位是否相同

for(j=1;

Str_Len(Tmp2)-1;

if(Tmp1[++k]==Tmp2[j])

{

if(Tmp1[k]<

97)Tmp1[k]+=32;

if(Tmp2[j]<

97)Tmp2[j]+=32;

}

if(CountL==Str_Len(Tmp2)-1)//当剩下几位也相同时即含有与Str2相同的部分

//Str_Inc三个参数的stringIclude函数用于将字符串Str1中第Num个Str2是字符的起始位置i作为返回值返回,当Str1中不含有Str2时,i的返回值为Str1的字符串长度

intStr_Inc(charStr1[],intNum,charStr2[])//需包含构造函数Str_Len

inti,CountL,CountS2=0;

for(i=0;

intk=i;

}

if(CountS2==Num)

returni;

//返回第Num个Str2处起始处i的值

returnStr_Len(Str1);

//Str_Son,求字符串数组最小子字符串函数,数组的最内层下标可以省略str1[][ANum1],其余参数必须补齐且与待处理数组相同

//将字符串数组str1中的子串存入数组str2中对应的位置

voidStr_Son(charstr1[][ANum1],charstr2[][ANum1])//需包含构造函数Arr_Len、Str_Len、三个参数Str_Cpy、三个参数的Str_Inc

inttotal=Arr_Len(str1);

total;

i++)//依次选取str1中的各个字符串,i循环

for(intj=0;

j<

Str_Len(str1[i])-1;

j++)//依次选取str1[i]的每一个子字符串字符串,j循环

intinclude=0;

Str_Cpy(str1[i],j+1,str2[i]);

//将子字符串拷贝到str2[i]中

for(inti2=0;

i2<

i2++)//将子字符串str2[i]与str1中每一个字符串str1[i2]比较

{

if(i2!

=i&

Str_Inc(str1[i2],1,str2[i])==0)//当str2[i2]与str2[i]不是同一个字符串,且str1[i2]开始的位置就含有子字符串str2[i]时,计数变量include自加

include++;

}

if(include==0)j=Str_Len(str1[i]-1);

//没有与子字符串相同时退出循环

//将字符串str2从str1的第一位开始清除

char*str_del(charstr1[],charstr2[])

if(str_inc(str1,str2)==0)returnstr1;

//判断str2是否为str1的子串,若不是直接返回str1不删除

//当str2未至结尾时

while(str1[i-1]!

=0)//当str2未至结尾str1还未至结尾时

str1[j]=str1[i];

//将str1的后str2位从开始位置开始复制

str1[j]=0;

//为str2加上结尾

//Str_DelStringdelit函数用于将字符串Str1中的第Num个Str2字符串删除

char*Str_Del(charStr1[],intNum,charStr2[])//需包含构造函数Str_Len、Str_Inc、

{//当Str1中没有Str时最大循环数CM_j<

0,j初值为0且j++,j<

CM_j不成立,返回Str1的值

inti=Str_Inc(Str1,Num,Str2);

//通过三个参数的stringIclude获取第Num个Str2在字符串str1字符串的起始位置i

intCM_j=Str_Len(Str1)-(Str_Len(Str2)-1)-i;

//求循环操作长度

for(intj=0;

CM_j;

Str1[i++]=Str1[i+(Str_Len(Str2)-1)];

//将Str1中第Num个Str2后的字符串移至起始位置i覆盖原有数据

//输出Str1注意!

在引用函数Str_Del时,Str1必须有属于自己的内存空间,如:

Str_Del("

1,"

pp"

)时,系统就

}

//Str_DelStringdelit函数用于删除字符串Str1中的所有Str2

char*Str_Del(charStr1[],charStr2[])//需包含构造函数Str_Len、两参数的Str_Inc、三参数的Str_Del

intcount=Str_Inc(Str1,Str2);

//统计开始时Str2含有多少个Str1

while(count--!

Str_Del(Str1,1,Str2);

//Str_Rep四个参数的StringRplace函数用一个字符串Str3去取代字符串Str1中的第Num个字符串Str2

char*Str_Rep(charStr1[],charStr2[],intNum,charStr3[])//需包含构造函数Str_Inc、Str_Del、Str_Add

//取代时Str1须有自己的内存空间才能写入,还需有足够容纳取代后总字符的

{//空间否则会发生数组越界可能会导致部分信息丢失

//用i记住第Num个Str2在Str1的起始位置

Str_Del(Str1,Num,Str2);

//删除Str1中第N

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1