-3

私は運動に問題があるので、ここに運動があります:

画面上の適切なメッセージを支援するプログラムを作成して、2つの文字列を読み取りstr1str2さらにはキーボードから提供される文字列を読み取り、変数内のすべての文字を削除します。これは、変数str1内にも表示されますstr2。ディスプレイには、プログラムの正しい動作を確認するための最終結果が表示されます。

そして、これが私がこれまでに行ったことです(私はこれらのライブラリのみを使用できます):

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char str1[80], str2[80];
    int megethos1, megethos2,max,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<=megethos2; j++){
        for (i=0; i<=megethos1; i++){
             if (str2[(strlen(str2)-j)]=str1[(strlen(str1)-i)])
                 str1[(strlen(str1)-i)]=' ';
        }
    }

    printf (str1);

    system("pause");

}

だから誰かが私を助けることができますか?

4

3 に答える 3

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

である場合i0str2[(strlen(str1)]で上書きしている文字列の終了ヌル文字です' '- 1どこかが必要です。

@PaulRがコメントで指摘したように、最初は。=である必要があり==ます。

scanf("%s", str)また、ではなくを使用する必要があることに注意してくださいscanf("%s", &str)

于 2012-06-02T12:40:00.587 に答える
1
#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");

}
于 2012-06-02T18:50:25.240 に答える
-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);
于 2012-06-02T12:44:59.183 に答える