c语言-截取重构字符串

【问题描述】

编写函数void fun(char *s,char *t,char *p)将未在字符串s中出现、而在字符串t中出现的字符, 形成一个新的字符串放在p中,p中字符按原字符串中字符顺序排列,但去掉重复字符。

例如: 当s为"12345", t为"8624677"时, p中的字符为: "867";

当s为”good luck”,t为”thank you very much”时,输出:”thanyverm”

#include<stdio.h>

#include<math.h>

void fun(char *s,char *t,char *p)

{

}

int main()

{

char s1[50],s2[50],s3[50];

printf("Input string s:");

gets(s1);

printf("Input string t:");

gets(s2);

fun(s1,s2,s3);

printf("result:");

puts(s3);

return 0;

}

【输入形式】输入两个字符串
【输出形式】输出一个字符串
【样例输入】

Input string s:12346

Input string t:689412356680014

【样例输出】result:8950

代码如下,如有帮助,请采纳一下,谢谢。

#include<stdio.h>
#include <string>
void fun(char *s,char *t,char *p)
{
	int lens = strlen(s);
	int lent = strlen(t);

	int index = 0;

	for (int i = 0; i < lent; i++)
	{
		char c = t[i];
		bool b = false;
		for (int j = 0; j < lens; j++)
		{
			if (s[j] == c)
			{
				b = true;
				break;
			}
		}
		//
		if (!b)
		{
			b = false;
			for (int j = 0; j < index;j++)
			{
				if (p[j] == c)
				{
					b = true;
					break;
				}
			}
			if(!b)
			{
				p[index] = c;
				index++;
			}
		}
		

	}

}
int main()
{
	char s1[50] ={0};
	char s2[50] ={0};
	char s3[50] = {0};
	printf("Input string s:");
	gets(s1);
	printf("Input string t:");
	gets(s2);
	fun(s1,s2,s3);
	printf("result:");
	puts(s3);

	getchar();
	getchar();
	return 0;
}

 

void fun(char *s,char *t,char *p) { int i,j,ms,mt; ms=strlen(s); mt=strlen(t); for(i=0;i { for(j=0;j if(s[i]==t[j]) break; if(j>=mt) *p++=s[i]; } *p='\0'; }