p字符串无法被赋值,只能输出(@p

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

如:输入:input string s: good luck

                  input string t: thank you very much

        输出:result: thanyvermh.

(char*s,char*t,char*p)
{
	
	puts(s);
	int i,j,k,l,m,flag;
	for(k=0;s[k]!='\0';){k++;}
	
	
	for(l=0;t[l]!='\0';){l++;}
	
	
	m=0;
	for(i=0;i<k;i++)
	{flag=0;
	for(j=0;j<l;j++)
	   {if(s[i]==t[j]){flag=1;break;}
	   }
	if(flag=0){p[m]=s[i];m++;}
    }
    puts(p);
	
}

 

 

逻辑写反了,应该是t作为外循环,s作为内循环,下面的判断也写错了,应该是flag==0,不是flag=0,代码修改如下:

#include <stdio.h>
void fun(char*s,char*t,char*p)
{
	//puts(s);
	int i,j,k,l,m,flag;
	for(k=0;s[k]!='\0';){k++;}
	for(l=0;t[l]!='\0';){l++;}

	m = 0;
	for (i = 0; i < l; i++)
	{
		flag = 0;
		for (j = 0;j < k;j++)
		{
			if(t[i] == s[j])
			{
				flag = 1;
				break;
			}
		}
		if (flag == 0)
		{
			p[m++] = t[i];
		}
	}
	
	printf("result:");
	puts(p);

}

int main()
{
	char s[100]={0};
	char t[100]={0};
	char p[100]={0};
	printf("input string s:");
	gets(s);
	printf("input string t:");
	gets(t);
	fun(s,t,p);
	return 0;
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632