void sort(char *p1,char *p2,char p3[])
{
int i=0;
while(*p1!='\0')
{
p3[i]=*p1;
p1++;
i++;
}
p3[i]='\0';
我现在的问题是这里怎么不重复的合并p2的字符到p3
for(i=0;i<strlen(p3)-1;i++)
for(int j=0;j<strlen(p3)-1-i;j++)
{
if(p3[j]>p3[j+1])
{
char t=p3[j+1];
p3[j+1]=p3[j];
p3[j]=t;
}
}
}
int main(void)
{
char str1[100],str2[100],str3[100];
printf("input str a and b:\n");
gets(str1);
gets(str2);
sort(str1,str2,str3);
puts(str3);
return 0;
}
代码如下:
void sort(char *p1,char *p2,char p3[])
{
int i=0,j,k;
char ch;
//p1全部拷贝
while(*p1!='\0')
{
p3[i]=*p1;
p1++;
i++;
}
//p2-->p3
while(*p2 != '\0')
{
for(j = 0;j<i;j++)
{
if(p3[j] == *p2)
break;
}
if(j== i)
p3[i++] = *p2;
p2++;
}
p3[i] = '\0';
//排序
for (k = 0;k<i-1;k++)
{
for(j=0;j<i-1-k;j++)
{
if(p3[j] > p3[j+1])
{
ch = p3[j];
p3[j] = p3[j+1];
p3[j+1] = ch;
}
}
}
}