kostenloser Webspace werbefrei: lima-city


Segmentation fault bei char Aufgabe

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    krisi12345

    Kostenloser Webspace von krisi12345

    krisi12345 hat kostenlosen Webspace.

    Ich tüfftele jetzt schon lange an einem einfachen problem das immer ein "Segmentation fault" ausgibt:
    Ich will aus einer Datei einen Namen Filtern wobei der Name in der Datei bis zu 128 Byte Platz hat Aber nur weniger einnehmen (soll).
    Um das zu erreichen wird ein 128 Byte String in ein in ein char eingetragen:
    char * NameRaw;
    fread(NameRaw, sizeof(char)*128, 1, open);

    In einer While Schleife soll dann solange immer ein Zeichen in den eigentlichen Namen String getan werden bis das aktuelle Zeichen 0x00 (NULL) ist:
    int i = 0;
    while (NameRaw[i] != 0x00) {
       Name[i] = NameRaw[i];
       i++;
    }

    Und bei dem "Name = NameRow" kommt immer dieser "Segmentation fault" Fehler. Ich weis das das irgendwas mit einer unmöglichen Aufgabe bei dateien bzw. Varibalen zu tun hat aber ich kann mir einfach nicht erklären wieso das so ist.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Allozierst du den Speicher für NameRaw und Name? In deinen Codeausschnitten ist davon nichts zu sehen. Könntest du deinen gesamten Code posten?
  4. Autor dieses Themas

    krisi12345

    Kostenloser Webspace von krisi12345

    krisi12345 hat kostenlosen Webspace.

    nikic schrieb:
    Allozierst du den Speicher für NameRaw und Name? In deinen Codeausschnitten ist davon nichts zu sehen. Könntest du deinen gesamten Code posten?

    Der Code stammt aus einer Header Datei zum öffnen von 3D Dateien stammt Texture Name usw. und momentan häng ich halt am Name der Dateien. Der ganze Code:
    struct Object {
        char * Name;
        char * TextureName;
        
        int VertexData;
        int UVData;
        
        float posx;
        float posy;
    };
    typedef struct Object Object;
    
    int LenOfStringArray(const char ** Array) {
        int i = 0;
        while (Array[i] != NULL) {
            i++;
        }
        return i;
    }
    
    void ParseFile(const char * File, const Object * object) {
        printf("%s\n", File);
        FILE * open = fopen(File, "r");
        
        int i;
        
        char * NameRaw;
        char * Name;
        fread(NameRaw, sizeof(char)*128, 1, open);
        
        i = 0;
        while (NameRaw[i] != NULL) {
            Name[i] = NameRaw[i];
            i++;
        }
        
        //printf("%s\n", Name);
        
        fclose(open);
    }
    
    void FileLoader(const char ** Files) {
        // Ermittle wie viele Dateien geladen werden müssen
        int FilesLen = LenOfStringArray(Files);
        
        printf("\nFileLoader:\n");
        printf("- Objekte die zu laden sind: %i\n", FilesLen);
        
        const Object * Objects[FilesLen+3];
        
        int i = 0;
        while (i < FilesLen) {
            printf("- - %i. Datei: %s\n", i+1, Files[i]);
            ParseFile(Files[i], Objects[0]);
            i++;
        }
    }
  5. Also wie mir scheint hat nikic recht damit,
    da weder Speicher für Name noch für NameRaw reserviert wird.
    Du solltest dich mal nach malloc oder new erkundigen.

    [edit] kleinen Fehler beseitigt ;-)

    Beitrag zuletzt geändert: 19.10.2010 20:41:36 von sektor
  6. Autor dieses Themas

    krisi12345

    Kostenloser Webspace von krisi12345

    krisi12345 hat kostenlosen Webspace.

    sektor schrieb: Also wie mir scheint hat nikic recht damit,
    da weder Speicher für Name noch für NameRaw reserviert wird.
    Du solltest dich mal nach malloc oder new erkundigen.

    [edit] kleinen Fehler beseitigt ;-)

    Daran hab ich ja ja garnicht gedacht :biggrin:
    Auf jeden Fall Danke!

    (Da hab ich ich wohl zu viel mit einfachen Intepreter Sprachen gearbeitet)
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!