我的运动有问题,所以这是练习:
在屏幕上编写一个帮助显示相应消息的程序,以便读取两个字符串
str1
和str2
,甚至可以从键盘中给出,然后删除变量中的所有字母{{ 1}},也出现在变量str1
中。显示屏显示检查程序正确操作的最终结果。
这是我到目前为止所做的(我只能使用这些库):
str2
所以任何人都可以帮助我?
答案 0 :(得分:2)
if (str2[(strlen(str2)-j)]=str1[(strlen(str1)-i)])
str1[(strlen(str1)-i)]=' ';
当i
为0
时,str2[(strlen(str1)]
是您使用' '
覆盖的字符串的终止空字符。你需要一个- 1
。
在评论中注明@PaulR,第一个=
应为==
。
另请注意,您必须使用scanf("%s", str)
而不是scanf("%s", &str)
。
答案 1 :(得分:0)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char str1[80], str2[80];
int size1,size2, i,j;
printf ("Give the first string: ");
scanf ("%s", str1);
printf ("Give the second string: ");
scanf ("%s", str2);
size1= strlen(str1);
size2= strlen(str2);
for (j=0; j<size2; j++){
for (i=0; i<size1; i++){
if (str2[j]==str1[i])
str1[i]=' ';
}
}
printf("%s\n", str1);
system("pause");
}
答案 2 :(得分:-1)
你的问题是关于C还是C#?
对于C#,您可以使用LINQ:
var s1 = "string new";
var s2 = "string";
var excludedCharText =
s1
.Where(c => s2.All(o => o != c))
.Select(c => c.ToString())
.Aggregate((prev, next) => prev + next);