比较两个字符串并删除常用字母

时间:2012-06-02 12:35:31

标签: c string compare character

我的运动有问题,所以这是练习:

  

在屏幕上编写一个帮助显示相应消息的程序,以便读取两个字符串str1str2,甚至可以从键盘中给出,然后删除变量中的所有字母{{ 1}},也出现在变量str1中。显示屏显示检查程序正确操作的最终结果。

这是我到目前为止所做的(我只能使用这些库):

str2

所以任何人都可以帮助我?

3 个答案:

答案 0 :(得分:2)

     if (str2[(strlen(str2)-j)]=str1[(strlen(str1)-i)])
         str1[(strlen(str1)-i)]=' ';

i0时,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);