Ergebnis 1 bis 6 von 6
  1. #1
    xallex xallex ist offline
    Avatar von xallex

    C++ Variablen aus Datei einlesen?

    Hey Leute,

    ich will Variablen nicht eingeben, sondern aus einer Datei einlesen. Jetzt bin ich hier schon eine Stunde am herrumprobieren, aber bekomme immer einen Fehler. Hier ist mein code:


    Code:
    #include <iostream>
    #include <cmath>
    #include<string>
    #include<fstream>
    using namespace std;
    
    int main()
    {	
    	double zahl1, zweitezahl;
            fstream ein("E:Ein.txt",ios::in);
    	fstream aus("E:Aus.txt",ios::out);
    	ein<<zahl1;
    	ein<<zweitezahl;
    	
    	system("Pause");
    }
    Wenn ich es Starte kommt die Meldung, dass die nicht initialisierten Variablen zahl1 und zweitezahl verwendet werden. Außerdem steht bei ein die Fehlermeldung:
    "+ ein {_Filebuffer={_Set_eback=0xcccccccc <Fehler beim Lesen der Zeichen der Zeichenfolge.> _Set_egptr=0xcccccccc <Fehler beim Lesen der Zeichen der Zeichenfolge.> ...} } std::basic_fstream<char,std::char_traits<char> >
    "

    Ich habe schon verschiedene Dateien an Verschiedenen Orten erstellt, aber es funktioniert nicht. Es scheint mir außerdem so, als würde nicht die Datei gelesen werden, sondern einfach E:Ein.txt als eingabe genommen werden. Habt ihr eine Idee, was ich falsch mache?

  2. Anzeige

    C++ Variablen aus Datei einlesen?

    Schau dir mal diesen Bereich an. Dort ist für jeden was dabei!
  3. #2
    ButterZ ButterZ ist offline
    Avatar von ButterZ

    AW: C++ Variablen aus Datei einlesen?

    Hi, du hast nichtmal einen Filepointer.
    Woher soll das Programm wissen wo die Datei im Speicher liegt?

    1. Zuerst brauchst du einen Filepointer, den erstellst du so: FILE *fp;
    2. Dann musst du deine Datei in einem bestimmten Modus öffen (in deinem Fall "Read"): fp = fopen(dateiname,"r");
    3. Jetzt kannnst du beliebig in der Datei über den Filepointer lesen.
    4. Datei schließen: fclose(fp);

    Als Zugriffsmodus steht zur Verfügung eine Kombination von "a", "r", "w" und "+":

    • 'r' (Lesen (read))
    • 'w' (Schreiben (write))
    • 'a' (Anhängen (append))
    • 'r+' (Lesen und Schreiben)
    • 'w+' (Schreiben und Lesen)
    • 'a+' (Lesen an bel. Position, Schreiben am Dateiende)

    Durch anhängen eines Zusatzes kann festgelegt werden, ob es sich bei der zu bearbeitenden Datei um eine Binär- oder Textdatei handelt:
    • 't' (für text)
    • 'b' (für binary)
    Wenn die Datei geöffnet ist stehen dir mehrere Funktionen zur Verfügung um aus der Datei zu lesen:
    -getc(FILE *fp) - Lädt ein Zeichen aus der Datei, setzt den Dateipositionszeiger +1
    -gets(char *s; FILE *fp) - Lädt einen String aus der Datei bis zum /n, setzt am Ende ein Null-Byte
    Ansosnten kannst du auch noch reichlich Material im Netz zu den Funktionen fread() und fscanf() finden.

    Das sollte als Hilfe reichen. Frag Google bei weiteren Fragen zur Syntax. Du willst ja hoffentlich nicht dein Programm von mir/anderen geschrieben bekommen

    MfG

  4. #3
    ButterZ ButterZ ist offline
    Avatar von ButterZ

    AW: C++ Variablen aus Datei einlesen?

    Korrigiere ... nicht gets() .... vergiss das, keine Ahnung was ich dabei dachte =D

    fgets(char *s, int size, FILE *fp)
    Das wäre die richtige Funktion ^^ und vor getc gehört noch ein f ...
    fgetc(FILE *fp)

  5. #4
    Kelshan Kelshan ist offline
    Avatar von Kelshan

    AW: C++ Variablen aus Datei einlesen?

    Eigentlich sollte das aber so funktionieren. Wenn man diesen Constructor für fstream verwendet so wie er es getan hat, dann wird die Datei automatisch geöffnet und man braucht selbst kein FILE Objekt etc. anlegen.

    Ich bin mir aber nicht sicher, ob es hier
    Code:
            fstream ein("E:Ein.txt",ios::in);
    nicht eher "E:\\Ein.txt" heißen müsste. Kann aber sein dass die Backslashes auch überflüssig ist. (Aber wenn dann 2, sonst erkennt er es als Escape-Sequenz.)

    Außerdem ist
    Code:
    	ein<<zahl1;
    	ein<<zweitezahl;
    schlicht falsch herum. Du willst ja etwas aus "ein" auslesen und in den Variablen "zahl1" und "zweitezahl" abspeichern. Was du stattdessen hier tust ist, den Inhalt der Variablen "zahl1" und "zweitezahl" in die Datei "ein" hinein zu schreiben. Und das geht natürlich aus zwei Gründen nicht:
    a) Du hast "ein" im Lesemodus geöffnet (ios::in), also kannst du nicht hinein schreiben
    b) Die Variablen "zahl1" und "zweitezahl" sind eben noch nicht initialisiert worden, also kannst du ihren Inhalt schlecht irgendwo hin speichern.

    An dieser Stelle solltest du dir merken: Die Daten fließen immer den Pfeilen nach. Im obigen Fall ("ein << zahl1") also von der Variablen in den Filestream. Willst du etwas aus der Datei in der Variablen speichern, musst du das also anders herum machen ("ein >> zahl1").

    Ohne Garantie, dass das auch ohne weiteres so funktioniert, aber das wären zumindest die Fehler die mir sofort ins Auge fallen.

  6. #5
    ButterZ ButterZ ist offline
    Avatar von ButterZ

    AW: C++ Variablen aus Datei einlesen?

    Zitat Kelshan Beitrag anzeigen
    Eigentlich sollte das aber so funktionieren. Wenn man diesen Constructor für fstream verwendet so wie er es getan hat, dann wird die Datei automatisch geöffnet und man braucht selbst kein FILE Objekt etc. anlegen.
    Gut das kann sein.
    Bei fstream bin ich den Vorgang so gewohnt:

    Code:
        fstream f; 
        f.open("test.dat", ios::out); 
        f << "Dieser Text geht in die Datei" << endl; 
        f.close();
    (ich habe es auch nie mit dem Konstruktor probiert ^^)

    Aber wie Kelshan schon sagte muss man in diesem Fall 2 x \\ dazwischen machen dann klappt es garantiert.

    Aber ich arbeite immer mit meinem geliebten Filepointer *fp weil ich den mag.
    Macht der Gewohnheit halt ^^ ich bin auch noch immer ein cin und cout verweigerer ^^

  7. #6
    xallex xallex ist offline
    Avatar von xallex

    AW: C++ Variablen aus Datei einlesen?

    Zitat Kelshan Beitrag anzeigen
    nicht eher "E:\\Ein.txt" heißen müsste. Kann aber sein dass die Backslashes auch überflüssig ist. (Aber wenn dann 2, sonst erkennt er es als Escape-Sequenz.)

    Außerdem ist
    Code:
    	ein<<zahl1;
    	ein<<zweitezahl;
    Nach einer Stunde suchen ist mir das mit den <</>> auch aufgefallen und jetzt funktionierts; manchmal bin ich aber auch dumm Die Backslashes braucht man nicht. Danke.

Ähnliche Themen


  1. Image Video Datei in eine Avi Datei umwandeln: Hallo, ich habe eine Image Datei,welche ein Video ist.Ich möchte gern diese Inage Datei in eine normale Video Datei umwandeln,damit ich sie mit...

  2. Variablen einer anderen Batch-Datei anzeigen: Hallo. Ich habe 2 Batch-Dateien. Eine, in der man Variablen setzen kann (set /p var=text:) und eine die sie anzeigen soll. Wenn ich in der...

  3. XBOX 360 Game einlesen...: Hallo liebe XBOX 360 - Anhänger, ich habe mir das Samsung SH-D162D zugelegt zwecks einlesen von XBOX 360 games. Will dieses nun an meinem Laptop...

  4. Excel-Datei (.xlsx) zu Access-Datei (.adp) umwandeln: Hallo, ich habe mir vor kurzem Microsoft Office 2007 gekauft und habe versehentlich Microsoft Publisher mit Access verwechselt. Jetzt muss ich aber...

  5. Problem beim Einlesen mit LG GDR-8161b: hiho Ich habe ein unerklärliches Problem mit meinem LG Laufwerk. Ich habe das LG GDR-8161B zum einlesen von Wii Spielen. Mein erstes Spiel das...

Besucher kamen mit folgenden Begriffen auf die Seite

vaiablen in c lesen