Comparer deux chaînes de caractères et de supprimer les lettres en commun
Je vais avoir des problème avec un exercice, voici l'exercice:
Écrire un programme qui aide avec les messages sur l'écran pour lire les deux chaînes de caractères
str1
etstr2
même qui sera donnée à partir du clavier, puis supprimez tous les caractères dans la variablestr1
, qui apparaissent également dans la variablestr2
. L'affichage montre le résultat final pour vérifier le bon fonctionnement du programme.
Et voici ce que j'ai fait jusqu'à présent (je peux utiliser seulement ces bibliothèques):
#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");
}
Si quelqu'un peut m'aider?
- Est-il un problème avec ce que vous avez codé jusqu'à présent? N'est-il pas de travail? Ce comportement a-t-elle?
- vous êtes à l'aide de c, pas du c#.
- Aussi, les balises n'ont pas leur place dans le titre, et le "je" est écrit avec une lettre majuscule.
- Je vois que vous avez appris à propos de strlen. Il ya beaucoup d'autres de la chaîne de manutention de la fonction de la bibliothèque standard, - en particulier, je vous recommande de lit les docs pour strpbrk, strspn, strcspn, et strchr. Pendant que vous êtes là, scout autour pour d'autres fonctions intéressantes qui peuvent vous aider plus tard affectations. Bonne chance.
Vous devez vous connecter pour publier un commentaire.
Quand
i
est0
puisstr2[(strlen(str1)]
est le caractère de fin null de la chaîne que vous écrasez avec' '
. Vous avez besoin d'un- 1
quelque part.Comme @PaulR noté dans les commentaires, le premier
=
devrait être un==
.Notez également que vous devez utiliser
scanf("%s", str)
et passcanf("%s", &str)
.=
devrait probablement être un==
?Est de votre question sur le C ou le C#?
Pour C#, vous pouvez utiliser LINQ:
new string(s1.Except(s2).ToArray())
(ce qui est déjà tout à fait inefficace). Regarder la chaîne de bâtisseur si vous voulais quelque chose d'un peu plus performant