Strings in Zeile vergleichen

DarKo87

Mitglied
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:
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;
 
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:
/../../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ß
 
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ß
 
Mit strtok werden diese einfach abgeschnitten sobald ein Parameter erfüllt ist.
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.
C:
char* token[20];
int len = 0;

for (token[len] = strtok(lineptr, ...); token[len]; token[++len] = strtok(NULL, ...));
Gruß
 
Damit hat es bestens geklappt. Hab das ganze noch ein wenig Modifiziert ;-) Und jetzt arbeite ich mich in die Regulären ausdrücke ein :-D

Danke nochmal

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.
C:
char* token[20];
int len = 0;

for (token[len] = strtok(lineptr, ...); token[len]; token[++len] = strtok(NULL, ...));
Gruß

Gibt es eigentlich irgendwie auch die möglichkeit diese forschleife in eine while zu verpacken?
 
Zuletzt bearbeitet von einem Moderator:
Natürlich, jede Schleifenart kann in andere umgeschrieben werden:
C++:
char* token[20];
int len = 0;

token[len] = strtok(lineptr, ...);
while (token[len])
    token[++len] = strtok(NULL, ...);

Gruß
 
Zurück