Struktur array

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Struktur array

    hi
    hab folgendes problem:

    ich lese eine textfatei aus, diese enthält eine unbestimmte anzahl an datensätzen, jeder einzelne dieser datensätze hat jedoch eine feste größe und unterteil sich weiter...
    ich habe also eine struktur gebaut und diese in ein array gepackt...
    nun will ich dieses array dynamisch machen
    die größe des arays wäre dann die größe der datei in bytes+1 wegen \0 am ende

    also sollte mein feld (filelength(&datei)) groß sein

    aber wie ich dann damit das feld mit malloc verändere verstehe ich nicht wirklich,
    ich habe viel im i-net gesucht, aber meist nur seiten/code gefunden die der struktur speicher zuweisen wollen... nicht jedoch dem feld,,,

    kann mir wer helfen?

    so sieht es bei mir bisher aus...
    und ich würde gerne MAX dynamisch an die größe der textdatei binden

    Quellcode

    1. #define MAX 10000
    2. struct drucken_html_string {
    3. char drucken_zeile[MAX];
    4. }drucken_liste[MAX];
    5. struct datensaetze {
    6. char irgendwas[2];
    7. .......
    8. .......
    9. };
    10. struct datensaetze anz_daten[MAX];
    Alles anzeigen


    also nochmal:
    jeder datensatz hat feste länge
    jedes irgendwas hat feste länge
    nur MAX ändert sich und hängt von der größe der auszulesenden datei ab
  • Wieso arbeitest du mit einer Konstanten MAX anstatt je nach Bedarf Speicher zu alloziieren und freizugeben? So kannst du du den benötigten Speicher viel präziser erreichen als mit einer groben Abschätzung im Vorfeld.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • SeBa schrieb:

    Wieso arbeitest du mit einer Konstanten MAX anstatt je nach Bedarf Speicher zu alloziieren und freizugeben? So kannst du du den benötigten Speicher viel präziser erreichen als mit einer groben Abschätzung im Vorfeld.



    ich sagte ja, so sieht es bisher aus... und jetzt würde ich die const max gerne rausnehemen und den speicherbereich vom feld mit malloc allokieren, nur verstehe ich nicht wie
    :(
  • Ja was verstehst du denn nicht? calloc(anzahl * sizeof(datentyp));
    Und schon hast du genug Speicher für anzahl Einträge der Größe datentyp (und schon gleich mit 0 initialisiert).
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]