我不太会写C代码的字符串程序,各位不要吝啬你们的意见啊 40 分放出,欢迎各位帮我测试 以及提出宝贵意见[测试源字符串,看看共出现多少个字符,每个字符出现的
#include<stdio.h>#include<string.h>
//移动字符串,从destpos处至结尾的字串
//移动到benpos处
//返回字串 b
void movechr(char *b,int benpos,int destpos)
{
int c1=0,i;
char *c;
c=b;
c1=strlen(b)-destpos+1; //待移动的字符串长度
b+=benpos-1; //置源串与目标位置
c+=destpos-1; //置待移动串与目标位置
for(i=0;i<c1;i++)
{
*b=*c;
b++;
c++;
}
*b='\0'; //修改源字串结束标志
}
//删除字符串函数 返回字串 b
void delchr(char *b,int chrpos)
{
movechr(b,chrpos,chrpos+1); //移动一个长度,即代表删除
}
int main()
{
int i,j,cout;
int t[256]; //置放单个不重复的字符
int cnum[256]; //置放对应不重复字符的出现的数量
for(i=0;i<256;i++) //初始化上述2个数组
{
t[i]=0;
cnum[i]=0;
}
//我们测试的源字符串,看看共出现多少个字符,每个字符出现的数量是多少
char s[]="aaaaa;;;;aaaa346345t34fdgdfgsdrgweert";
j=0;
i=0;
cout=0;
while (1) //第一重循环按位处理源字符串中的每一位字符
{
t[j]=s[0]; //另t[]永远都放置源字符串中的首字符,直至字符串结束
while(1) //第2重循环的目标就是删除和首字符相同的所有字符(含首字符)
{
if(s[i]==t[j])
{ //处理重复字符串
delchr(s,i+1);
cout++; //保存重复的字符串的数量
i=0;
}
else
{ //处理不重复字符串
i++;
}
if(s[i]=='\0') //遇到结束符 退出循环
{
break;
}
}
cnum[j]=cout;
cout=0;
j++; //保存下一个不重复的字符
i=0;
if(s[0]=='\0') break; //遇到结束符 退出循环
}
i=0;
while(1)
{
if(t[i]=='\0') break;
//打印上面保存的2个数组,一个放字符 一个放数量
printf("字符%c出现的次数是%d\n",t[i],cnum[i]);
i++;
}
return 0;
}
[ 本帖最后由 wp231957 于 2012-11-12 11:21 编辑 ]