一个字符串,如aAbas__a;要求,过滤为每个字符只出现一次:aAbs_;
#include<stdlib.h>
#include<stdio.h>#include<string.h>
#include<iostream>
#include<malloc.h>
void chstr(const char *Input,char *Out)
{
int m=strlen(Input);
const char *p=Input;
char *q=Out;
int a[BUFSIZ]={0};
for(int i=0;i<m;i++)
{
a[*p]++; //关键之处,将符号作为下标,可以统计出其出现的次数
if(a[*p]>1)
p++;
else
*q++=*p++;
}
*q='\0';
}
//另外一种方法,每次放入数据之前,都检测一下是否已经放入过
void chstr(const char *Input,char *Out)
{
int m=strlen(Input);
const char *p=Input;
char *q=Out;
for(int i=0;i<m;i++)
{
for (int j=0;j<p-Input;j++)
{
if (*p==*(Input+j))
{
p++;
break;
}
}
if (j==p-Input)
{
*q++=*p++;
}
}
*q='\0';
}
{
char a[]="abad__abdd??z";
char *b=(char *)malloc(sizeof(char)*strlen(a));
chstr(a,b);
std::cout<<b;
}