目录
1.ASCII码值
'A'-----65
'a'-----97
'0'-----48
(1)字符串的遍历
(1)while(*s) s++;
(2)for(i=0;s[i]!='\0';i++)
(2)字符串的结束标志 '\0'
(3)字符串函数
strlen() 字符串长度
strcopy(s1,s2) 将s2复制到s1中
strcmp(s1,s2) 比较
strcat(s1,s2) 连接
2.字符字母的判定与统计
//统计a-z各自出现的次数
void fun(char *tt,int pp[])
{
int i;
for(i=0;i<26;i++)
pp[i]=0;
while(*tt)
{
if(*tt>='a'&& *tt<='z')
{
pp[*tt-'a']++;
}
tt++;
}
}
3.字母的大小写转换
//将下标为奇数位上的字母转换为大写字母
void fun(char *ss)
{
int i;
for(i=0;ss[i]!='\0';i++)
{
if((i%2==1)&&(ss[i]>='a'&&s[i]<='z'))
{
ss[i]=ss[i]-32;
}
}
}
4.数字字符的判定与统计
//统计数字字符的个数
int fun(char *s)
{
int i,count=0;
for(i=0;s[i]!='\0';i++)
if(s[i]>='0'&&s[i]<='9')
count++;
return count;
}
5.数字字符转化为对应数字
long fun(char *s)
{
long t=0;
int len=0;
len=strlen(s);
int i,d=0;
for(i=0;i<len;i++)
{
d=s[i]-'0';
t=t*10+d;
}
return t;
}
6.字符串中字符的删除
(1)将后边的数据覆盖点前边的数据
s[i]=s[i+1]
(2)不包含要删除的数字
s[i]!=key
s[j++]=s[i]
//只保留下标为奇数,同时ASCII码值为奇数的字符
void fun(char *s,char t[])
{
int i,j=0,len;
len=strlen(s);
for(i=0;i<len;i++)
{
if(i%2==1&&s[i]%2==1)
{
t[j++]=s[i];
}
}
t[j]='\0';
}
(3)删除*号
//删除字符串后边*号
//输入****A*BC*DEF*G*******,n=4;输出****A*BC*DEF*G****
void fun(char *a,int n)
{
char *p=a;//要移动的指针
int k=0;//统计字符串后边*号的个数
while(*p) p++;
p--;//指向有效地字符 G
while(*p=='*')
{
k++;
p--;//倒着统计
}
if(k>n) *(p+n+1)='\0';
}
//删除前边的
void fun( char *a, int n )
{
int i=0;
int k=0;
char *p,*t;
p=t=a;
while(*t=='*')
{k++;t++;}
if(k>n)
{
while(*p)
{
a[i]=*(p+k-n);
i++;
p++;
}
a[i]='\0';
}
}
//删除中间的*
void fun( char *a, char *h,char *p )
{
int i=0;
char *q=a;
while(q<h)
{
a[i]=*q;
q++;
i++;
}
while(q<p)
{
if(*q!='*')
{
a[i]=*q;
i++;
}
q++;
}
while(*q)
{
a[i]=*q;
i++;
q++;
}
a[i]='\0';
}
//只删除前导和尾部的*号
//n为字符串的长度;h为前导*号的个数;e为尾部*号的个数
void fun(char *a,int n,int h,int e)
{
int i,j=0;
for(i=h;i<n-e;j++)
a[j++]=a[i];
a[j]='\0';
}
7.字符串中字符的移动
//把1-m个字符平移到字符串的最后,把m+1的最后的字符移动到字符串的前部
//输入ABCDEFGHIJK,m=3;输出DEFGHIJKABC
void fun(char *w,int m)
{
int i,j;
char t;
for(i=1;i<=m;i++)
{
t=w[0];
for(j=1;w[j]!='\0';j++)
{
w[j-1]=w[j];
}
w[j-1]=t;
}
}
8.字符串中查找子串
9.字符串的回文判断与逆置
(1)回文:顺读和倒读都一样的字符串
int fun(char *str)
{
char *p=str;
int flag=0;
while(*p) p++; p--;
while(str<=p)
{
if(*str==*p)
{
str++;
p--;
}
else
break;
}
if(str>=p) flag=1;
return flag;
}
(2)逆置
void fun(char *s)
{
char *p=s,t;
while(*p) p++;
p--;
while(s<=p)
{
t=*s;
*s=*p;
*p=t;
s++;
p--;
}
}
10.复制字符串
void fun(char *a, char *s)
{
int i;
for(i=0;s[i]!='\0';i++)
{
a[i]=s[i];
}
a[i]='\0';
}
11.字符串数组
(1)字符串的连接
void fun(char a[M][N],char *b)
{
int i,j,k;
for(i=0;i<M;i++)
{
for(j=0;a[i][j]!='\0';j++)
b[k++]=a[i][j];
}
b[k]='\0';
}
(2)字符串的长度
char *fun(char (*a)[81],int num,char *max)
{
int i;
max=a[0];
for(i=0;i<num;i++)
{
if(strlen(max)<strlen(a[i]))
max=a[i];
}
return max;
}