bestimmte spalten aus textdatei ausgeben



  • hallo,
    ich bin neu in c, ich muss ein programm schreiben, dass datei liest und zb die spalten 3 bis 10 am bildschirm ausgibt.
    meine frage wäre, mit welchem befehlen soll ich einlesen, damit ich nur die erforderlichen spalten ausgeben kann?(mit erklärung der argumente der befehle, wenn es geht)
    vielen dank



  • Für Dateien schau dir mal die Klasse CFile an. Mehr kann ich dir nicht helfen, ich kenne den Aufbau deiner Textdatei nicht.



  • @peter pan:

    sicher würde dir hier der ein oder andere gern weiterhelfen (ist ja nicht so sonderlich schwer), aber bevor du nicht ein wenig vom aufbau deiner textdatei preisgibst (trennzeichen?), kann dir hier keiner helfen.



  • Willst du ein reines C-Programm oder MFC ?

    Bei reinem C würde ich dich dann verschieben.

    Aber Grundsätzlich:

    Datei Zeile für Zeile einlesen und dann nach Trennzeichen Parsen.



  • die textdeiten ist beliebig welche!keine beschränkung.
    alles was verlangt wird, ist bestimmte spalten am bild schirm auszugeben(z.B 3 bis 8 spalte)
    danke



  • Wie ist so eine ominöse Spalte definiert?



  • Hm ... Meinst du mit Spalte vlt die Position seit Zeilenbeginn?
    Bsp:

    Hallo peter pan.
    Leider weiss ich nicht
    genau, was du meinst ...
    

    Spalte 3 wären dann also die Zeichen l,i und n.
    Meinst du sowas?



  • hallo wieder,
    also jedes zeichen ist ein element einer spalte, so ist das gemeint in der aufgabe. und man soll eben bestimmte spalten also alle zeichen, die dieser spalten angehören, ausgeben.
    danke



  • Hallo wieder !

    Wenn deine Textdatei so aussieht

    spalte1,spalte2,spalte3

    dann ist dies eine cvs-Datei (Kommaseparated Datei)

    Diese musst du nach den "," parsen.

    Du brauchst in deiner Textdatei schon etwas wo du die Spalten auseinanderhalten kannsts.



  • die datei schaut z.b. ganz einfach so aus:
    c ist eine gewöhnungsbedrürfige sprache
    aber man kann sie lernen
    perl ist aber abstrakter
    peter pan fliegt aber überall hin
    ------^
    das ist z.b ist eine spalte: e
    a
    s
    p
    danke!



  • die spalte, die ich da oben schrieb, war nicht so klar, aber im editor was sie das.
    aber ich glaube die idee ist klar.



  • Jetzt steig ich ganz aus.

    c ist eine gewöhnungsbedrürfige sprache
    aber man kann sie lernen
    perl ist aber abstrakter
    peter pan fliegt aber überall hin
    ------^
    das ist z.b ist eine spalte: e
    a
    s
    p

    Das erste e kommt im 3ten Wort vor
    2 Zeile 3tes Wort beginnt aber mit k. Wo kommt das a her ?

    Wenn du die Worter als Spalten nimmst dann ist es auch nur mit SPACE getrennt. Also in einen CSring schreiben und mit find suchen. dann mit Mid trennen.



  • ich weiss es nicht im editor schienen die gewählten buchstaben alle untereinander zu sein.
    auf jeden fall, die dritte spalte zum beispiel ist die gruppe der zeichen, die in jeder zeil an dritten stell vorkommen.
    ihr hattet ganz andere aufgaben zu bewähltigen, wahrscheinlich. und deshalb erscheint euch meine aufgabe kommisch.
    aber danke für die antworten.



  • Ich glaube, du suchst das hier:

    - ein Objekt anlegen, mit dem du auf Dateien zugreifen kannst (ich nenne mein Beispieldateiobjekt mal File):

    CStdioFile::CStdioFile
    

    (also z.B. so das Objekt erstellen: CStdioFile File;)
    (CFile geht bestimmt auch, aber danit habe ich es nicht ausprobiert)

    - Datei zum lesen öffnen:

    File.Open("hier_Pfad_und_Dateiname_als_String", CStdioFile::modeRead)
    

    - das Ende der Datei bestimmen (damit man nicht über das Ende hinaus liest):

    File.GetLength()
    

    - die aktuelle Position in der Datei bestimmen (darf nicht über das Ende hinaus gehen):

    File.GetPosition()
    

    - eine Zeile auslesen:

    File.ReadString(cZeile) // cZeile ist vom Typ CString
    

    - ein Zeichen an einer bestimmten Stelle aus der Zeile auslesen (du nennst es eine Spalte auslesen):

    cZeile.GetAt(i) // i ist vom Typ int (GetAt() liefert ein TCHAR zurück)
    

    - nicht vergessen, die Datei wieder zu schliessen:

    File.Close()
    

    Wenn man die Befehle richtig kombiniert und noch ein paar Kontrollen einbaut, sollte es klappen.

    [edit]

    Original erstellt von dEUS:
    [...]
    Spalte 3 wären dann also die Zeichen l,i und n.
    Meinst du sowas?

    Davon gehe ich aus, so habe ich sein Problem jedenfalls auch verstanden...
    [/edit]

    [ Dieser Beitrag wurde am 23.10.2002 um 14:13 Uhr von isabeau editiert. ]



  • peter pan:
    Schau dir nochmals meinen Beitrag an. Meinst du das? Ja oder nein?



  • ich danke euch allen für die antworten, es war eine hilfe.
    dieses forum ist wirklich spitze 🙂


Anmelden zum Antworten