Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » gleichbleibende Zeilen einlesen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
20.11.2012, 13:23 Uhr
Masskrug



hallo leute ich habe folgendes Problem:


Ich will von einer Textdatei mit mehreren Zeilen eine ganze Zeile auslesen, jedoch möchte ich dabei beispielsweise nur die
gesamte 2.Zeile und die 4. Zeile benutzen

-> zur Info ich will immer nur die zeilen einlesen, der Zeilenaufbau meiner Datei ändert sich nicht, nur der Zeileninhalt



1.Beispiel txt-Datei:

[name]
Bauer Hans
[alter]
34


2.Beispiel txt-Datei:

[name]
Schmidt Alfons
[alter]
40


Meine Frage ist jetzt, ob ich dabei die Funktion getline(Streamname, Stringname) nutzen kann?

Mein Problem hierbei ist, dass ich nicht den Stringnamen angebeben will sondern einfach eine Zeilennummer oder so?


Kann ich mein Problem mit getline() realisieren oder muss ich mein Problem anders angehen?


Danke für eure Hilfe leute
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.11.2012, 14:34 Uhr
ao

(Operator)


Direkt zu einer Zeilennummer springen geht nicht. Vor und zurück springen kannst du nur um eine Anzahl Zeichen. Und du kennst die Anzahl nicht, weil du nicht vorab weißt, wie lang die Zeilen sind. Um zu einer bestimmten Zeilennummer zu gehen, musst du also die Datei Zeile für Zeile lesen, alles, was dich nicht interessiert, sofort wegwerfen und dabei die Zeilen mitzählen.

Bei Dateien, die so ein Format haben wie hier (Feldname in Klammern und dahinter den zugeordneten Wert), ist aber üblicherweise gerade nicht garantiert, dass der Name in Zeile 2 steht und das Alter in Zeile 4. Auch wenn das in der Wirklichkeit (fast) immer so ist: Es ist nicht verboten, es anders zu machen, und irgendwer wird das irgendwann tun. Also sollte die Leseroutine auch entsprechend programmiert werden.

Du musst also so lange die Datei lesen, bis du auf das Feld [name] triffst. Die nächste Zeile ist dann der gesuchte Name. Beim Alter dasselbe.

Und wenn du das Ganze jetzt richtig schön machen willst, dann nimmst du nicht dieses selbstdefinierte Dateiformat, sondern XML. Dann sieht das etwa so aus:

<name>Bauer Hans</name>
<alter>34</alter>

und es gibt für praktisch jede denkbare Umgebung XML-Bibliotheken, die die Datei für dich zerpflücken und dir den Inhalt vorstrukturiert anbieten.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.11.2012, 10:23 Uhr
Masskrug



also den Aspekt mit dem XML-Format will ich erstmal hinten anstellen :-)


dann wird die ganze Sache ja umfangreicher als ich gedacht habe, aber man wächst ja mit seinen Aufgaben




Irgendwie hab ich nicht so wirklich eine Idee, wie ich mein Problem angehen kann
(Programmiert ja erst seit 3 wochen in c++^^)

Hättest du evtl einen kleinen Programmanstoß für mich?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.11.2012, 11:21 Uhr
ao

(Operator)


Na ja, du brauchst eine while- oder do-while-Schleife, in der du zeilenweise liest bis zur Zeile "[name]". Dann noch eine Zeile weiter lesen, um den Namen abzuholen.

Dabei natürlich nicht vergessen, den ifstream auf Fehlerbits zu prüfen (z.B. EndOfFile erreicht, ohne dass "[name]" gefunden wurde). In so einem Fall musst du abbrechen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.11.2012, 11:21 Uhr
~masskrug1
Gast


also ich habe mal die ersten schritte soweit erledigt,

leider habe ich immer noch ein Problem mit dem zeilenweisen lesen bis zum [name]



wie kann man denn sowas realisieren?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.11.2012, 12:02 Uhr
ao

(Operator)



Zitat von ~masskrug1:
also ich habe mal die ersten schritte soweit erledigt,

Dann zeig doch mal.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
22.11.2012, 12:42 Uhr
~masskrug1
Gast


so das ist mein bisheriger code

innerhalb der whileschleife will ich nun zeilenweise zählen


#include <stdio.h>
#include <stdlib.h>


using namespace std;
int main ()
{

FILE *fp;
char Data[80];
char ReturnCode;

fp=fopen("D\ZickZack.txt","r");

if(fp == NULL)
{
printf("Fehler bei fopen()... \n");
return EXIT_FAILURE;
}
else
{
while(.......
{


}
}



}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.11.2012, 14:40 Uhr
~f.-th.
Gast


Du warst bei älteren Beiträgen schon mal besser. Was ist los?
Mit den Codetags klappte das doch schon mal?


C++:
#include <stdio.h>   // das ist C und nicht C++ !
#include <stdlib.h>  // das ist C und nicht C++ !


using namespace std;  // Eine Zeile C++ - super - hier zwar nicht sinnvoll, aber ...
int main ()
{

FILE *fp;   // das ist C und nicht C++ !
char Data[80];
char ReturnCode;

fp=fopen("D\ZickZack.txt","r");   // das ist C und nicht C++ !

if(fp == NULL)
{
printf("Fehler bei fopen()... \n");   // das ist C und nicht C++ !
return EXIT_FAILURE;   // das ist C-Stil und nicht C++ !
}
else
{
while(.......



Diesen Code willst du uns als ernsthaften Versuch verkaufen? Da sollte doch schon mehr stehen.

Was soll es diesmal werden C oder C++?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
22.11.2012, 15:19 Uhr
~masskrug1
Gast


c++

ja verdammt dann hab ich hier mal gewaltig was durcheinander gebracht


mich würde es aber trotzdem interessieren wie man zeilenweise liest bis zu einem bestimmten punkt
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
22.11.2012, 16:39 Uhr
~f.-th.
Gast


Was ist dein Problem?
Zeige uns deinen bisherigen Quellcode dann schreiben wir etwas dazu. Aber nicht so eine schwache Variante wie eben.

Oder willst du nicht C++ lernen?
Okay, dann werde Politiker und, wenn du Minister bist lass deine Zuarbeiter den Quelltext schreiben. Wie das geht stand in den letzten Monaten oft genug in den Medien.

Also C++ Quelltext zeigen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: