Marcel: C Problem

Hallo

Ich habe das Problem, dass ich in C Zeilen von einer Datei einlesen und diese danach weiterverarbeiten muss. Somit weiss ich nicht, für wieviele Zeilen ich in einem Array Speicher reservieren muss. Darum verwende ich in der Funktion dateieinlesen() malloc und realloc um Speicher dynamisch zu allozieren. Das klappt auch prima. Aber wie kann ich nun in der main Funktion auf dieses Array zugreifen?

  
int **test;  
  
void dateieinlesen() {  
   // Array erstellen mit malloc/realloc  
   // und Werte zuweisen  
   // Bsp. test[i] = 1;  
}  
  
int main(int argc, char *argv[])  
{  
  dateieinlesen();  
  
  test[0] = 1; // FEHLER  
  return 0;  
}  

Gruss Marcel

  1. Hallo Marcel

    Das klappt auch prima. Aber wie kann ich nun in der main Funktion auf dieses Array zugreifen?

    Du deklarierst einen globalen Zeiger, der auf das erste Element Deines Feldes verweist und benutzt dann diesen.

    Gruß,
    Maddin

  2. Du bist nicht zufällig an der Uni-Erlangen, in "Systemprogrammierung 1" (oder softwaresysteme, wie's etz heisst glaub ich)?

    Mir kommt das Problem so verdächtig bekannt vor aus meiner Uni-Vergangenheit ;)

    Viele Grüße,
    Jörg

    1. Sup!

      Kann ich mich gar nicht dran erinnern...

      Gruesse,

      Bio

      --
      Never give up, never surrender!!!
      1. Ho, Bio,

        wsort

        Kann mich aber auch täuschen, aber die Aufgabe hat mich damals vor ein ähnliches Problem gestellt :)

  3. 你好 Marcel,

    int **test;

    Du hast hier einen Pointer auf einen Pointer (oder auch ein
    zweidimensionales Array, das ist das Gleiche).

    test[0] = 1; // FEHLER

    Hier dereferenzierst du den Pointer auf der ersten Ebene, also nur einmal.
    Da du aber einen Pointer auf einen Pointer hast, ist das falsch. Du
    müsstest also mindestens *test[0] = 1 schreiben, oder auch test[0][0] = 1.

    再见,
     克里斯蒂安

    --
    Renovation der Mensa-Nord | Zweitkonto
    Beware Evildoers for my deed is done and every little damsel in distress will be shelted!
    http://wwwtech.de/