Strings sammeln



  • Hallo

    Ich lese ein Verzeichnis aus und möchte die Ergebnis in einen Array speichern.

    GDir *dir;
    const gchar *homepath = g_get_current_dir();
    const gchar *dirpath;
    gchar *ergebnis[1000];
    gint count = 0;
    
    void filter()
    {	
    dir = g_dir_open(homepath,0,NULL);
    
    while((dirpath = g_dir_read_name(dir)))
    {
    
    	strcpy(ergebnis[count],dirpath); 
    	count++;
    
    }
    g_dir_close(dir);
    }
    

    Leider kommst ein Segemtations fault. Kann mir da einer weiterhelfen?

    MfG
    Klaus



  • du legst nur zeiger an, nirgends den speicherplatz, auf den diese zeigen sollen. also zeigen die irgendwo in der gegend rum...



  • Hallo!

    Du must für jeden gchar zeiger im ergebnis-array auch entsprechend Speicher in der länge des strings reservieren bevor du ihn dort hin kopierst.

    ergebnis[count] = (gchar *)malloc((strlen(dirpath)+1)*sizof(gchar));
    if (ergebnis[count] == NULL)
    return;
    strcpy(ergebnis[count],dirpath);
        count++;
    

    gruß
    Michael



  • Hallo,
    mus du das nicht echer so anledern:

    .
    .
    .
    gchar ergebnis[20][1000];
    .
    .
    .
    

    oder?

    MfG TaccoGo


Anmelden zum Antworten