tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
863
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Carpocalypse Carpocalypse ist offline Mitglied Bronze
    Registriert seit
    Jul 2004
    Ort
    Weißwasser
    Beiträge
    26
    Hi,

    ich möhte mir aus einer Datei einen Name anzeigen lasen, dies funktioniert aber irgendwie nicht.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    int anzahl;
    char *vname;
    FILE *stream;
    stream=fopen("name.liz", "r");
    fseek(stream,0,SEEK_SET);
    fread(&anzahl,sizeof (anzahl),1,stream);
    vname=new char[anzahl];
    fseek(stream,4,SEEK_SET);
    fread(&vname,sizeof (*vname),1,stream);
    fclose(stream);
    Vorname->Text=*vname;

    das auslesen der Anzahl funktioniert einwandfrei nur beim Vornamen schreibt er irgendwelche wirren Zeichen hin. Ich hoffe ihr könnt mir helfen.
     
    Blau ist keine Farbe, Blau ist ein Zustand

  2. #2
    Registriert seit
    Jul 2003
    Ort
    Duisburg (NRW)
    Beiträge
    1.788
    Code :
    1
    
    fread(&vname,sizeof (*vname),1,stream);
    vname ist bereits der Zeiger auf dein char-Array, deshalb darfst du da kein '&' vormachen -- das steht dann nämlich für einen Zeiger auf den Zeiger. Ausserdem solltest du als zweiten Parameter die Anzahl übergeben. Übrigens wäre es gut, das char-Array etwas grösser zu machen und eine Schlussnul dranzuhängen, damit es ein "C-String" wird:
    Code :
    1
    2
    3
    4
    
    vname=new char[anzahl+1];           // mit platz für schlussnull
    //fseek( stream, 4, SEEK_SET );     // könnte überflüssig oder schädlich sein
    fread( vname, anzahl, 1, stream );  // anzahl der zeichen lesen
    vname[anzahl] = (char)0;            // schlussnull setzen

    Da fällt mir noch ein: Das fseek() sollte eigentlich überflüssig sein, weil fread() den Filepointer ohnehin weiterbewegt. Lass es mal weg, falls es so nicht klappt.

    Hast du dir mal überlegt, mit filestreams zu arbeiten? (std::ifstream, std::ofstream) Das ist empfehlenswert.
     
    Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."

  3. #3
    RabeDev RabeDev ist offline Grünschnabel
    Registriert seit
    Aug 2004
    Beiträge
    4
    Solltest Du eine reine Textdatei einlesen wollen (wonach es fuer mich aussieht), dann geht's aber auch einfacher. Probier's doch mal mit "getc()", mit der Du ein zeilenweises Einlesen bspw. so implementieren koenntest

    int getline(FILE *stream, char *buf)
    {
    int p, i=0;

    do
    {
    p = fgetc(stream);
    buf[i++] = (char) p;
    }
    while ((p != EOF) && ((char) p != '\n'));

    buf[i-1] = '\0';
    return p;
    }

    Oder Du nimmst gleich "fgets()" ... -> siehe:
    http://msdn.microsoft.com/library/de...2c_.fgetws.asp

    (Oder - solltest Du C++ schreiben - schau Dich mal im iostream-Umfeld oder ggf. der MFC um. Da gibt es noch weitere "modernere" (?) Varianten. C-Funcs sind aber schon okay!)
     

Ähnliche Themen

  1. FTP Client - Login Daten aus einer Txt Datei lesen
    Von ischmael im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 20.07.05, 22:10
  2. xml soll aus externe datei daten lesen
    Von knopi im Forum XML Technologien
    Antworten: 1
    Letzter Beitrag: 26.01.05, 13:30
  3. Daten aus txt Datei lesen
    Von duermer im Forum PHP
    Antworten: 2
    Letzter Beitrag: 15.06.04, 15:59
  4. Daten aus einer Datei lesen!
    Von Mr. FISHMAN im Forum PHP
    Antworten: 10
    Letzter Beitrag: 01.10.02, 10:06
  5. Antworten: 4
    Letzter Beitrag: 04.04.02, 08:09