strtok Fehler



  • Hallo,

    hab hier ein strtok wo ich zwei tokens jeweils bei jedem durchlauf habe, die in zwei verschieden char* geschrieben werden sollen, allerdings bekomme ich beim debuggen beim 3ten durchlauf einen Fehler.

    for(cnt_wp=0;cnt_wp<t;cnt_wp++)
    	{
    		wp=strtok (weather[cnt_wp],trennzeichen);
    		while (wp!=NULL)
    		{
    			tokenTag[cnt_wp] = (char*)malloc(sizeof(char) * (strlen(line)+1));
    			tokenExp[cnt_wp] = (char*)malloc(sizeof(char) * (strlen(line)+1));
    			strcpy(tokenTag[cnt_wp],wp);
    			wp=strtok(NULL,trennzeichen);
    			strcpy(tokenExp[cnt_wp],wp);
    			wp=strtok(NULL,trennzeichen);
    		}
    	}
    

    Dies kann auf eine Beschädigung des Heaps zurückzuführen sein und weist auf ein Problem in tst.exe oder in einer der geladenen DLLs hin.



  • was mir auf den ersten blick auffällt:
    1. du testest in der schleife nicht, ob strtok 0 zurückgibt.
    2. die rückgabewerte von malloc werden auch nicht auf 0 geprüft
    3. cnt_wp wird nicht hochgezählt
    4. der rückgabewert von malloc wird zu einem anderen pointer gecastet: unnötig und potentiell gefährlich
    🙂



  • Hallo,

    danke für deine Antwort. Ist mir schon klar, dass der code nicht wirklich 100% richtig ist, hab aber den Fehler jetzt gefunden. By strlen(line) steht was falsches drin, naja eine Nacht mal darüber schlafen und beim nächste mal schauen findet man den Fehler.

    danke


Anmelden zum Antworten