Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Jens

Treue Seele

  • »Jens« ist der Autor dieses Themas

Beiträge: 117

Wohnort: Dresden

  • Private Nachricht senden

1

12.09.2003, 18:57

InStrInString-Funktion ähnlich wie das alte FileCompare

Hi Leute,
hat jemand nen Link zu einem ausgeklügelten FileCompare-Algorithmus?
Ich meine, wenn ich einen String in einem anderen suche, kann ich das z. B. mit strstr tun, wenn ich aber gemeinsame Vorkommen in beiden Texten suche und gleich noch die Positionen zurückerhalten möchte, könnte ich auf den ersten Blick ziemlich umständlich, vielleicht auch rekursiv vorgehen.
Ich muss aber das Rad doch nicht neu erfinden.
Gibt es da irgendwo OpenSource?
auf CodeGuru, CodeProject usw. habe ich nix! gefunden.

Danke
Bis später...

Anonymous

unregistriert

2

12.09.2003, 19:08

Ich weiß nicht aber ich habe da mal was gesehen, schau mal da rein ob das was für Dich ist :
http://www.juicystudio.com/tutorial/cpp/strings.html

Anonymous

unregistriert

3

12.09.2003, 19:10

Meinst Du so etwas ? Das stammt von der Seite oben.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
compare.cpp
#include <iostream.h>
#include <string.h>
int main()
{
    char first[80], second[80];
    cout << "Enter a string: ";
    cin >> first;
    cout << "Enter another string: ";
    cin >> second;
    if (strcmp(first, second) == 0)
        cout << "The two strings are equal\n";
    else
        cout << "The two strings are not equal\n";
    return 0;
}

Jens

Treue Seele

  • »Jens« ist der Autor dieses Themas

Beiträge: 117

Wohnort: Dresden

  • Private Nachricht senden

4

12.09.2003, 19:23

nicht ganz, aber trotzdem danke :-)

Hallo SM3D,
na ja, strcmp und die normalen Stringfunktionen geben mir keine gemeinsamen Vorkommen wieder.

Selbst strstr würde nicht reichen. Es müsste so was wie StrNStrNI geben.
So meinte ich das:
Ich habe zwei Texte, also ganz offen zwei SPAM-Emails ;-)
Nun gehe ich in einer Email den Text durch und suche Gemeinsamkeiten, die auch in der zweiten Email vorkommen.
Diese Gemeinsamkeiten speichere ich, wenn mehrere Worte oder ein Absatz zustande kam.
Wenn in diesem Absatz nur ein kleiner Teil nicht übereinstimmt (z. B. kommen meist verschiedene Links oder Emailadressen darin vor), dann wird die Position dieses kleinen Teils geliefert und die Funktion müsste dann weiterrasseln.

Also müsste ich erst alle beiden Texte kleinmachen, damit ich mit == caseinsentitive prüfen kann.
Dann das erste Zeichen der ersten Email mit dem ersten Zeichen der zweiten Email vergleichen. Wenn übereinstimmt, das zweite mit dem zweiten usw.
Wenn keine Übereinstimmung, dann müsste ich das zweite Zeichen der ersten Email mit dem ersten Zeichen der ersten Email vergleichen, dann das dritte immer noch mit dem ersten usw.
Also Zeichen für Zeichen, bis eine Übereinstimmung zustande kommt. Und wenn nicht dann der gesamte Vorgang ab dem 2. Zeichen der ersten Email, dann alles ab dem 3.en usw. Wahnsinn!
Das kann ja Stunden dauern, oder.
...Wieder aufm Holzwech?
Bis später...

Anonymous

unregistriert

5

12.09.2003, 19:50

Jetzt verstehe ich das. Hm.. da weiß ich leider im Moment auch kein Rad, aber vielleicht hat ja jemand anderes noch eine Idee.

Jens

Treue Seele

  • »Jens« ist der Autor dieses Themas

Beiträge: 117

Wohnort: Dresden

  • Private Nachricht senden

6

12.09.2003, 20:21

nee, war doch guuut!

das mit strtoken war doch ne gute Idee.
Ich zerlege den Emailbodytext in die vorkommenden Wörter und halte dabei die Reihenfolge bei.
Dann mache ich mit strcmp einen genauen Wortvergleich sobald es die erste Übereinstimmung gab. Und dann merke ich mir die zusammenhängenden Wörter. Ist doch Spitze ;-)
...und geht viel schneller!
Super
Bis später...

7

12.09.2003, 20:27

wozu gibts Upper- und Lowercase ?

Jens

Treue Seele

  • »Jens« ist der Autor dieses Themas

Beiträge: 117

Wohnort: Dresden

  • Private Nachricht senden

8

13.09.2003, 00:37

äähm

na zum vergrößern und verkleinern, warum? :-)

Du meinst sicher, warum ich nicht einfach mit lstrimp vergleiche. Na ganz einfach, weil bei diesem Problem (Finden von Gleichheiten in zwei Texten)nicht von vorn herein klar ist, um wieviele gleiche Zeichen es sich handeln könnte....

Aber nun komme ich bei meinem eigentlichen Problem vom 100sten ins 1000ste :-(
Beim automatischen Filtern von SPAM müssen ja ne Unmenge von Daten gespeichert werden.
Absender-Emailadressen kann man faken. Empfängeremailadressen sind auch immer unterschiedlich (wenn man eine ganze Domain besitzt), Betreffs wechseln, aber der Bodytext der SPAM-Email bleibt gleich.
Aber eben nicht ganz gleich. Trotzdem würde ich NUR! den Text auswerten, weil er ja den eigentlichen SchMist enthält.

Die Spammer haben sich ja schon gedacht, dass eine einfache Exaktsuche scheitern muss, also nehmen die als Anschreiben Dear Username, wobei Username aus der eben gefundenen Emailadresse entnommen wurde.
Nach dem SPAM-Textkörper kommt wieder ne sinnlose Zeichenfolge, die auch von Gleichheit anderer SPAMMails ablenken soll. Und zwischendurch kommt ein völlig verblödeter Link zu unterschiedlichen Webseiten vor...

Und bei sogenannten Mailer-Daemon-Rückmails kommen immer unterschiedliche Emailadressen zwischen fast gleichen SPAM-Texten vor.

Wieviel Intelligenz muss man haben, um zu erkennen, wie der Mensch hier SPAM erkennt und was er macht, um das zu erkennen.
Da stecken ne Menge Daten dahinter, die beim Blick auf die Vergleichsemail im Gehirn immer wieder von vorn nach hinten gescrollt werden.
:-)
Bis später...

Tobiking

1x Rätselkönig

  • Private Nachricht senden

9

13.09.2003, 11:48

Ich kenne wenige leute die englisch sprechen und mir würde garantiert keiner ne e-mail schicken also würde ich alles mit dear am anfang löschen ;D . Und andere Sachen muss man überlegen. Wenn eine Website mit dem Teil Sex drin ist könnte man löschen und schon wären einige Spam mails weg.

Jens

Treue Seele

  • »Jens« ist der Autor dieses Themas

Beiträge: 117

Wohnort: Dresden

  • Private Nachricht senden

10

13.09.2003, 12:25

ja, nicht schlecht...

ich glaube, so geht auch der Mensch vor. Er muss sich den ganzen Mist nicht erst durchlesen, sondern erkennt am ersten Blick, ob der Text sich auf Sex, auf Pharmazie (also auch Sex ;-)) oder was anderes bezieht.

Also kennt er "ein paar" Begriffe, anhand derer die Email einzustufen ist. Das bedeutet, dass ich ne Art Katalog hinterlege, in dem sich Wörter befinden und in dem weitere gesammelt werden, die einem Thema zugeordnet werden (oder auch nicht)
Das ist mir zuviel Vorarbeit.
Ich werde jede von Hand zugeordnete SPAM-Mail in Wörter zerlegen und alle relevanten Wörter(?) in zukünftigen Emails in ner bestimmten Reihenfolge suchen.
Mal sehen, ob das funzt.
Bis später...

Werbeanzeige