user-0 提问: 请帮我看下我的  将字符串s1中所有出现在字符串s2中的字符删去。

回复:
user: user-1
content: #include <stdio.h> #include <string.h> void re(char str1[],char str2[]) { 	int i,j,flag,n=0; 	for(i=0;str1[i]!='\0';i++) 	{ 		j=0; 		flag=0; 		for(;str2[j]!='\0';j++) 		if(str1[i]==str2[j]) 		{ 			flag=1; 			break; 		} 		if(!flag) 		str1[n++]=str1[i];		 	} 	str1[n]='\0';	 } int main() { 	char str1[40],str2[40]; 	scanf("%s%s",str1,str2); 	re(str1,str2); 	puts(str1);     	return 0; }

user: user-2
content: #include<stdio.h> main() {    char a[100]={'\0'},b[100]={'\0'};    int i,j;  for(i=0;i<100;i++)  {         a[i]=getchar();         if(a[i]=='\n')         break;  }   for(i=0;i<100;i++)  {         b[i]=getchar();         if(b[i]=='\n')         break;  } for(i=0;i<100;i++) for(j=0;j<100;j++) {          if(b[i]==a[j])         b[i]='\0'; }   for(i=0;i<100;i++)         putchar(b[i]);   putchar('\n'); }

user: user-3
content: 仅供参考 // 返回子串subStr在原串src中找到的第一个匹配的子串的首字符指针 char * FindSubStr(char *src, char *subStr) { 	if (NULL == src || NULL == subStr || strlen(src) < strlen(subStr)) 	{ 		return NULL; 	} 	char *pSrc = src; 	char *psubStr = subStr; 	char *pFind = NULL; 	while (*pSrc && *psubStr) 	{ 		if (*pSrc == *psubStr) 		{ 			if (!pFind) 			{ 				pFind = pSrc; 				if (strlen(pFind) < strlen(subStr)) 				{ 					return NULL; 				} 			} 			pSrc++; 			psubStr++; 		} 		else 		{ 			if (pFind) 			{ 				pSrc = pFind + 1; 				pFind = NULL; 			} 			else 				pSrc++; 			psubStr = subStr; 		} 	} 	return pFind; }  // 计算子串subStr在原串src中出现的次数 void DelSubStr(char *src ,char*subStr) { 	if (NULL == src || NULL == subStr || 0 == strlen(src) || 0 == strlen(subStr)) 	{ 		return; 	} 	size_t nSubLen = strlen(subStr); 	size_t nSrcLen = strlen(src); 	char *p = FindSubStr(src,subStr); 	while (p) 	{ 		*p = 0; 		strcat_s(src ,nSrcLen ,p+nSubLen); 		p = FindSubStr(p,subStr); 	} }    int main() { 	char str[] = "aab12c45ab64a"; 	char *pSubStr = "ab"; 	DelSubStr(str ,pSubStr); 	printf("%s\n",str); 	return 0; }

user: user-4
content: #include<stdio.h> main() { 	char a[100],b[100]; 	int i,j,m,n; 	for(i=0;i<100;i++)  	{         a[i]=getchar();         if(a[i]=='\n') 			break; 	} 	for(j=0;j<100;j++)  	{         b[j]=getchar();         if(b[j]=='\n') 			break; 	} 	for(m=0;m<i;m++) 		for(n=0;n<j;n++) 		{ 			if( a[m] == b[n] ) 			{ 				for( int k=m;k<i;k++ ) 					a[k]=a[k+1]; 				n = 0; 				i--; 			} 		} 			 	for(m=0;m<i;i++) 		putchar(b[i]); }

user: user-5
content: 引用 1 楼 u011337306 的回复:首先，你需要将数组初始化  char a[100] = "\0" , b[100] = "\0";  另外，你可以考虑标准库里面有些函数是可以用在这里的，比如strstr,strpbrk，都是关于字符操作的，还有很多，自己可以去学习下1 不是什么数组都得初始化 2 初始化 直接 "" 就可以了 \0 纯属卖萌

user: user-6
content: 仅供参考#include <stdio.h> #include <string.h> #include <locale.h> char s[256]; char *p; int r,n,i; int main() {     setlocale(LC_ALL,"chs");     while (1) {         printf("请输入一行文字(空行结束),\"%%20\"将替换为\" \",\"你懂得\"将替换为\"XXXXXX\":\n");         fgets(s,256,stdin);         if ('\n'==s[0]) break;         p=s;         while (1) {             p=strstr(p,"%20");             if (p) {                 memmove(p+1,p+3,strlen(p)-3+1);                 p[0]=' ';             } else break;         }         p=s;         while (1) {             p=strstr(p,"你懂得");             if (p) {                 memmove(p+6,p+6,strlen(p)-6+1);                 for (i=0;i<6;i++) p[i]='X';             } else break;         }         printf("%s",s);     }     return 0; } //请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX": //abcdefg%20helloworld%20something.pdf //abcdefg helloworld something.pdf //请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX": //这是测试文字你懂得，在这个你懂的地方，就得做你懂得的事 //这是测试文字XXXXX，在这个你懂的地方，就得做XXXXX的事 //请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX": //

user: user-7
content: for(i=0;i < 100;i++) 			{ 				if(b[i] != '\0') 				putchar(b[i]); 			} 	改这里就ok，但楼主，你的代码略微复杂了些，你可以试着简化

user: user-8
content: 首先，你需要将数组初始化  char a[100] = "\0" , b[100] = "\0";  另外，你可以考虑标准库里面有些函数是可以用在这里的，比如strstr,strpbrk，都是关于字符操作的，还有很多，自己可以去学习下