2Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
12
12
ZUGRIFFE
371
371
EMPFEHLEN
-
Moin,
Ich hab momentan das Problem das ich versuche verschiedene strings in einer Zeile zu vergleichen. Find aber keinen richtigen ansatz dafür.
Bis jetzt hab ich nur das die Zeile eingelesen wird und dann getrennt wird nach \n \t und leerzeichen.
Code :1 2 3 4 5 6 7 8 9
void *t_read(void){ char *ptr; size_t len = 0; while((line_val=getline(&line_ptr, &len, ofile)) != EOF){ ptr = strtok(line_ptr, "\n\t "); } return 0;Dieser Beitrag und sein Inhalt sind Geistiges Eigentum von DarKo87
Mit freundlichen Grueßen / Best regards
DarKo87
-
28.11.11 08:13 #2
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Also da mußt du schon etwas genauer werden.
Was soll wie verglichen werden?
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Hey Deep,
Du bist ja auch immer sehr zügig im antworten
Also ich habe z.B. ne Logilfe in der bestimmte Fehler eingetragen sind.
Eine zeile könnte wie folgt aussehen.
Code :1
/../../filename/ /../fehler/bla/ /../fehler/bla/
Hier geht es darum, das also von / zu / heraus gefiltert wird. Also diese Angabe genommen wird um die Zeile anzugeben.
Danach sollen alle weiteren Strings einfach nur verglichen werden. Das heißt, ich habe Parameter das von / zu / gelesen werden soll und dann soll er einfach die Zeile weiter durchgehen und abfragen wo nochmal der selbe string vorkommt oder nicht.
Also oben in dem Beispiel, wären nach der pfadangabe die beiden weiteren strings gleich, somit ein fehler.
Ich hoffe, es ist halbwegsverständlich :-/
GrußDieser Beitrag und sein Inhalt sind Geistiges Eigentum von DarKo87
Mit freundlichen Grueßen / Best regards
DarKo87
-
28.11.11 09:30 #4
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Evtl. solltest du dafür einfach reg. Ausdrücke verwenden.
Die Zeile nur nach "\n\nt " zu trennen funktioniert spätestens dann nicht mehr wenn ein Leerzeichen oder Tab in einem der Pfade enthalten ist.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Dieser Beitrag und sein Inhalt sind Geistiges Eigentum von DarKo87
Mit freundlichen Grueßen / Best regards
DarKo87
-
28.11.11 10:35 #6
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Aha. "Eigentlich"

http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Dieser Beitrag und sein Inhalt sind Geistiges Eigentum von DarKo87
Mit freundlichen Grueßen / Best regards
DarKo87
-
28.11.11 13:45 #8
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
strtok ändert den originalen String und fügt \0 Zeichen ein.
Man könnte also z.B. in einem Array oder einer Liste alle Token (bzw. Zeiger auf die Token) speichern.
Bsp. GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Geändert von sheel (01.12.11 um 14:53 Uhr) Grund: Doppel
Dieser Beitrag und sein Inhalt sind Geistiges Eigentum von DarKo87
Mit freundlichen Grueßen / Best regards
DarKo87
-
Natürlich, jede Schleifenart kann in andere umgeschrieben werden:
Code cpp:1 2 3 4 5 6
char* token[20]; int len = 0; token[len] = strtok(lineptr, ...); while (token[len]) token[++len] = strtok(NULL, ...);
GrußNetiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
Super danke ! Nun versuche ich nur noch zu verstehen was genau da passiert.
Hier wird der Pointer auf das erste Zeichen geschrieben, was in der zeile ist oder?#Code :1
token[len] = strtok(lineptr, ...);
Hier wird nun jedes Zeichen mit NULL beschrieben, was den anforderungen entspricht?Code :1 2
while (token[len]) token[++len] = strtok(NULL, ...);
Aber wie kann die While nun beendet werden? Weil ja alle Zeichen auf 0 Geschrieben werde müsste sie doch bereits nach dem ersten durchlauf beenden?!Dieser Beitrag und sein Inhalt sind Geistiges Eigentum von DarKo87
Mit freundlichen Grueßen / Best regards
DarKo87
-
01.12.11 15:10 #12
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
First of all, da werden har keine Zeichen beschrieben.
token ist kein Array aus Einzelbuchstaben (also ein String),
sondern ein Array aus Char-Pointern.
Ein Potenzielles Array aus char-Arrays, potenzielles Array aus Strings.
20 Strings.
Das erste strtok füllt den ersten String.
Das in der Schleife die anderen.
NULL deshalb, damit die nächsten Teile vom gleichen Quellstring genommen werden
(das ist einfach so festgelegt, dass dann NULL übergeben werden muss; siehe Doku).
Wenn dann der letzte Teil in einen String gefüllt worden ist,
liefert das nächste strtok selbst NULL zurück.
Deshalb die Schleifenbedingung.
Ist eine Kurzform von
Code cpp:1
while (token[len] != NULL)
Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
Ähnliche Themen
-
c# strings vergleichen
Von Alex F. im Forum .NET CaféAntworten: 3Letzter Beitrag: 29.07.07, 12:31 -
Strings vergleichen
Von schiese im Forum PHPAntworten: 2Letzter Beitrag: 25.07.06, 20:01 -
strings vergleichen
Von sra im Forum Visual Basic 6.0Antworten: 4Letzter Beitrag: 05.05.04, 00:01 -
2 Strings vergleichen
Von Rios im Forum PHPAntworten: 11Letzter Beitrag: 13.04.04, 17:47 -
Strings vergleichen
Von nadine im Forum Javascript & AjaxAntworten: 6Letzter Beitrag: 09.09.03, 16:11





Zitieren

Werde mich da mal einarbeiten.

Login






