tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
563
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    yunus219 yunus219 ist offline Rookie
    Registriert seit
    Nov 2007
    Beiträge
    9
    Hallo,

    ich habe folgendes Problem: Ich habe eine Datei, in der z.B.:
    "RECT 1 2 3 4
    SQUARE 2 4 5"

    gespeichert ist.

    Nun möchte ich die Zeilenweise in einem Array speichern.

    Wie könnte ich es verwirklichen ****

    mfg yunus219
     

  2. #2
    Trulleberg Trulleberg ist offline Mitglied Bronze
    Registriert seit
    Oct 2010
    Beiträge
    35
    In C und mit dynamischer Speicherallokierung z.B.

    Code c:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    int anzahl = 0, i;
    char **zeilen = NULL, zeile[100];
    FILE *f = fopen("datei.txt","r");
    while( fgets(zeile,100,f) )
    {
      zeilen = realloc(zeilen, ++anzahl * sizeof(*zeilen));
      zeilen[anzahl-1] = malloc( strlen(zeile)+1 );
      strcpy(zeilen[anzahl-1],zeile);
    }
    fclose(f);
    for(i=0;i<anzahl;i++)
      printf("%s", zeilen[i] );

    Die Ergebniszeilen besitzen meist noch jeweils ein abschließendes '\n', was je nach weiterem Verwendungszweck stört oder nicht.
    Geändert von Trulleberg (10.12.10 um 17:34 Uhr)
     

  3. #3
    yunus219 yunus219 ist offline Rookie
    Registriert seit
    Nov 2007
    Beiträge
    9
    Sorry,

    ich habe vergessen zu erwähnen, dass ich es in C++ verwirklichen möchte.
    Dankeschön für die schnelle Antwort Trulleberg, aber ich bekomme die Fehlermeldung "invalid conversion from void to char", da ich es in C++ haben will, anstatt von C.
     

  4. #4
    Trulleberg Trulleberg ist offline Mitglied Bronze
    Registriert seit
    Oct 2010
    Beiträge
    35
    Das ist ganz normal, dass Fehlermeldungen auftreten, wenn man versucht, mit einem C++ Compiler C Code zu übersetzen. Ich habe ja auch extra drübergeschrieben, dass es sich um C handelt.
    Setze vor die *alloc-Funktionen (char**) bzw. (char*) und gut is.
     

  5. #5
    Crash Kid Crash Kid ist offline Mitglied Gold
    Registriert seit
    Jan 2009
    Beiträge
    147
    Hey,

    du kannst es auch so machen:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    #include <fstream>
    #include <string>
     
    using namespace std;
     
    fstream fDatei;
    string stInhalt;
    int iZahl;
     
    fDatei.open("C:\\test.dat", ios::in | ios::binary);  //Öffne die Datei 'test.dat'
    if(fDatei.good())  //Überprüfung ob sie geöffnet werden konnte
    {
        for(iZahl = 1; iZahl <= 1; ++iZahl)  //Auslesen der 1. Zeile
        {
            getline(fDatei, stInhalt);
        }
        
        fDatei.close();  //Schließe die Datei
    }

    Du kannst hiermit genau festlegen, welche Zeile du auslesen willst.
    Ob die 1., 2., usw., jenachdem wie weit die for()-Schleife hochzählt.
    Um die 5. Zeile auszulesen, musst du sagen "for(iZahl= 1; iZahl <= 5; ++iZahl);"
    Der Inhalt steht in der string-Variablen "stInhalt" drin.

    Hoffe ich konnte dir helfen...
    P.S.: hier steht alles über die fstream-Funktionen: http://www.willemer.de/informatik/cpp/fileop.htm

    gruß
     
    Wenn meine Antwort nützlich bzw. hilfreich war, würde ich mich sehr über eine Bewertung bzw. ein Danke sehr freuen.

    Danke euch


    Programmiere in C, C++ auf Windows XP, Vista und Windows 7
    Spezialisiert auf Netzwerkprogrammierung, WinAPI uvm.

  6. #6
    yunus219 yunus219 ist offline Rookie
    Registriert seit
    Nov 2007
    Beiträge
    9
    Hallo nochmal,

    Danke für Eure schnelle Antworten, mit der getline habe ich es auch schon gehabt, nur mein Problem ist dann, dass ich dann die ganze Zeile in einem String habe. Ich möchte es ja in einem Array haben.
     

  7. #7
    Crash Kid Crash Kid ist offline Mitglied Gold
    Registriert seit
    Jan 2009
    Beiträge
    147
    Du kannst ja den string-Inhalt in ein Array schreiben. Das ist ja kein Problem.
    Dafür gibt es ja die Funktion strcpy(), und bezüglich der größe kannst du ja den string überprüfen wie groß er ist, und ein entsprechend großes Array erstellen.

    gruß
     
    Wenn meine Antwort nützlich bzw. hilfreich war, würde ich mich sehr über eine Bewertung bzw. ein Danke sehr freuen.

    Danke euch


    Programmiere in C, C++ auf Windows XP, Vista und Windows 7
    Spezialisiert auf Netzwerkprogrammierung, WinAPI uvm.

  8. #8
    yunus219 yunus219 ist offline Rookie
    Registriert seit
    Nov 2007
    Beiträge
    9
    Hallo nochmal,

    ich habe immer noch keine Lösung für meinen Problem gefunden.
    Ich bekomme alles ausgelesen, nur bekomme ich das dann nicht seperat in den Array, wie ich es haben möchte.

    Ich möchte es so haben:

    1. Zeile: RECT 11 2 13 4 --> string s[zeilennr]="RECT" int i[zeilennr][0]=11 ...... int i[zeilennr][3]=4
    2. Zeile: SQUARE 21 4 5 --> string s[zeilennr]="SQUARE" int i[zeilennr][0]=21 ...... int i[zeilennr][2]=5
     

  9. #9
    Trulleberg Trulleberg ist offline Mitglied Bronze
    Registriert seit
    Oct 2010
    Beiträge
    35
    Das Problem bei Anfängern ist, dass sie meist zwar vage Vorstellungen vom Ziel ihrer Programme haben, aber schon ganz genau wissen, wie der Weg dahin aussehen muss. Genauso bei dir, da du einerseits "eine Zeile in einem Array" haben willst, dich aber jetzt plötzlich doch für mehrere Arrays entschieden hast: "string [], int[], ...".
    Schau dir mal Strukturen an, damit wenigstens etwas Systematik in deine Arbeitsweise kommt.
     

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 03.07.09, 11:13
  2. VB.NET Wie am besten Variablen in Datei speichern? (Ini-Datei)
    Von Terminator2 im Forum .NET Datenverwaltung
    Antworten: 6
    Letzter Beitrag: 20.04.07, 10:24
  3. mehrere Variablen in Datei speichern und gezielt auslesen
    Von Terminator2 im Forum Visual Basic 6.0
    Antworten: 13
    Letzter Beitrag: 24.08.06, 16:37
  4. Antworten: 0
    Letzter Beitrag: 25.04.05, 19:08
  5. Variablen in separater .js-Datei speichern
    Von gelbfuessler im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 11.10.04, 14:50