char array ende?



  • Ich schreib grad einen MS3D Loader in C++.
    Doch hab ich beim Header ein Problem.

    Einlesen tu ich so:

    [...]
    
        // Allocate memory:
    	char* buffer = new char [length];
    
    	// Read data as a block:
    	is.read (buffer, length);
    	is.close();
    
    	// Read header
    	MS3DHeader* header = (MS3DHeader*)buffer
    
    	MessageBox(NULL, header->id, "", MB_OK); // test
    
    	if (strcmp(header->id, "MS3D000000") != 0)
    		return false;
    

    Mein Header struct ist auch korrekt laut Dateispezifikation. Es ist ein char[10], der immer "MS3D000000" ist. Auf jeden Fall ist das Problem, dass strcmp sagt, dass die beiden nicht gleich sind.
    In der MessageBox steht folgendes:
    http://bloody-blades.de/images/messageBox.png

    Vielen Dank



  • header->id ist nicht Null-terminiert.

    if (strncmp(header->id, "MS3D000000", 10) != 0)
    


  • Ah, wunderbar 🙂 Sowas hab ich mir auch schon gedacht, aber ich kannte die andere compare Funktion noch nicht, vielen Dank!


Anmelden zum Antworten