Ergebnis 1 bis 4 von 4

Thema: Einlesefehler

  1. #1
    Kyo
    Gast

    Standard Einlesefehler

    Ich hab folgenden Abschnitt der mir eine Mehrzeilige Datei (txt in dem fall) einlesen soll.

    funktioniert auch soweit, nur dass er mehr einliest als es soll:

    Code:
    FILE *target;
    char * content;

    target = fopen(src_file, "r");
    lFileLen = filelength(target->_file);
    content = new char[lFileLen];
    fread(content, 1, lFileLen, target);
    fclose(target);
    cout << content << endl;

    Auch ifstream, fstream versionen habe ich probiert, aber das problem ist überall dasselbe...
    ich möchte die mehrzeilige datei exakt auslesen, verarbeiten und wieder speichern... das verarbeiten und speichern macht keine probleme, aber das auslesen muckt rum ohne ende...
    sitze hier jetzt schon seit einer woche dran, bin richtig gefrustet und hab c++ schon als hoffnungslos abgestempelt. Die gesamte Datei muss in einem dynamischen Zeiger gespeichert sein! Wie groß dieser ist ist egal.

    Die Zeichen die nicht dazugehören sind meist so aufgebaut:
    1 '=' für jede Zeile die die Datei hat wird am ende des eigentlichen Strings angehängt.
    sowie danach eine (zufällige?) anzahl an '²' und fetten ':'

    Eigentlich dürfte er nach syntax nur die datei einlesen und in Content wäre eigentlich auch nicht mehr platz... aber trotzdem passiert dies...
    Meine Lehrer wussten auch nicht weiter

    Wär toll wenn ihr da was wüsstet oder evtl sogar glaich ne lösung habt die ne Datei korrekt einliest
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Forum Guru Avatar von The User
    Registriert seit
    28.10.2007
    Ort
    Zwischen Pazifik und Atlantik...
    Beiträge
    4.044
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Einlesefehler

    Hallo!
    filelength ist kein Standard-C++!
    Wenn du keinen Platz verschenken möchtest, lies zeilenweise und schreib es in einen string.
    Ansonsten kannst du auch char* mit sehr großer Länge anlegen und dann füllen.
    Oder du zählst erst einmal in einer Schleife und nimmst dann fgets.

    Viele liebe Grüße
    The User

    PS:
    Hier stehts:
    http://www.cplusplus.com/doc/tutorial/files.html

    PPS:
    Schau dir mal an, was ich da gefunden habe:
    http://www.cplusplus.com/reference/s...tring/reserve/
    Dateizeiger ans Ende setzen, Zähler zurückgeben lassen, in Schleife einlesen oder eben mit read...
    Geändert von The User (07.04.2009 um 23:52 Uhr)

  3. #3
    Kyo
    Gast

    Standard AW: Einlesefehler

    Ansonsten kannst du auch char* mit sehr großer Länge anlegen
    Ungern

    Da die Dateien beliebig groß sein können...

    filelength ist kein Standard-C++!
    Macht nix... in dem Fall gibt es die Korrekte Dateigröße zurück, wurde unabhängig überprüft.
    Liegt auch nicht daran... er liest einfach mehr ein als die filegröße... oder er ignoriert die angabe... oder was weiß ich woher diese komischen zeichen kommen...

    Wenn du keinen Platz verschenken möchtest, lies zeilenweise und schreib es in einen string.
    Kann leider nicht auf Strings umschreiben da der rest des funktionsfähigen Programms den Inhalt in einem Zeiger auf char haben muss.

    Oder du zählst erst einmal in einer Schleife und nimmst dann fgets.
    Beispiel?
    ich versehs grad net...

    Vielen Dank für die Antwort erstma

  4. #4
    Forum Guru Avatar von The User
    Registriert seit
    28.10.2007
    Ort
    Zwischen Pazifik und Atlantik...
    Beiträge
    4.044
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Einlesefehler

    Also ich bin hierfür:
    1. Du nimmst einen C++-string und ersparst dir den Low-Level-Kram
    2. -Du setzt den Dateizeiger beim Öffnen auf das Ende der Datei
    -Du fragst mit tellg die Position ab
    -Du legst mit der Länge ein char-Array an
    -Du springst mit setg an den Anfang
    -Du liest in das char-Array ein
    Warum verwendest du denn C-Strings? Das ist doch ziemlicher Blödsinn. Damit hälst du dauernd die Entwicklung an alten C-Problemchen auf, anstatt High-Level zu programmieren.

    Viele liebe Grüße
    The User

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •