strstr Funktion-Frage am Beispiel



  • Hallo,
    ich hab hier einen kurzen Codeausschnitt:

    struct element *suchen(char suchzk[100]){
    gefunden=0;
    el=start;
    	if(start==NULL)
    		nichtvorhanden=1;
    	while(el!=NULL){
    		if(strstr(suchzk, el->zk)!=NULL){
    			gefunden=1;
    			break;
    		}
    		if (gefunden==0)
    			nichtvorhanden=1;
    	el=el->next;	
    	}
    return el;
    }
    

    es geht darum dass eine eingebene Teilzeichenkette(in diesem Fall "suchzk") in jedem Element einer verketteten Liste gesucht und gelöscht wird.
    Z.b.
    Hallo,
    jede
    Zeile
    steht
    für
    ein
    Element
    der
    verketteten Liste.

    Würde ich nun als suchzk ein "e" eingeben, sollte theoretisch
    Hallo,
    für

    dastehen, da alle übrigen elemente ein e enthielten und gelöscht werden.
    Das mit dem Löschen klappt alles super, doch mit dem Suchen haperts.
    Ich dachte mir das so, dass beide Zeichenketten mit "strstr" verglichen werden und wenn die Funktion einen Pointer !=Null zurückliefert bedeutet das, dass ein Treffer vorliegt. Bei obigem Beispiel wird bei mir allerdings nichts gefunden, nur wenn die strings identisch sind...
    Woran liegts?^^
    Lg



  • Du hast die Parameter der Funktion vertauscht - aktuell überprüfst du, ob in der Eingabe "e" die Listenwerte "Hallo", "jede" etc vorkommen (was offensichtlich nicht der Fall ist).



  • Ok, danke.
    Doch richtig funktioniert es jetzt immernoch nicht.
    habe ich
    a
    aaaaaab
    c
    und gebe als löschstring b ein, so wird ab gelöscht.
    habe ich aber
    a
    baaaaaaaaa
    c
    wird b nicht gelöscht.
    Praktisch muss der Teilstring am Stringende stehen...
    hab ich noch was übersehen?
    Danke schonmal für die Hilfe



  • Wie gibst du die Strings denn ein?
    Ist vielleicht noch ein '\n' am Ende?


Log in to reply