Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » PHP » bestimmte Zeile aus txt lesen

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 <
000
16.02.2004, 20:51 Uhr
AlfameisterT



Hallo,

mal wieder ein neues Problem


Ich möchte aus einer Datei bestimmte Zeilen lesen, z.B. Zeile 3-5.
Mit fgets() kann man ja Zeilenweise lesen.
Aber wie kann ich auf Zeile 3 vorspringen.
Mit der Fkt. fseek() kann man nur Byteweise vorspringen, leider ist jede Zeile unterschiedlich lang, so das mir das wenig hilft.

Hat jemand eine Idee?

Gruß
AlfameisterT
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.02.2004, 21:09 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


naja z.b. entweder jedes zeichen einzeln durchlesen bis du 3 newlines findest

C++:
FILE fp*=fopen(.......);
int line=0;
while(line<3)if(fgetc(fp)=='\n')++line;
//jetzt sollte fp auf das erste zeichen der 4.zeile zeigen...


eventuell kann man sowas auch einfach mit fgets basteln wenn man weiss wie lang die längste zeile ist...
gibt bestimmt noch massenweise andere möglichkeiten...


Bearbeitung:

äh sorry ist ja php *grins* naja in php gehts bestimmt genauso ist ja relativ c ähnlich


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 16.02.2004 um 21:11 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.02.2004, 21:30 Uhr
AlfameisterT



gute Idee,
weisst du zufällig wie lange so ne Operation wie fgetc dauert.
Eine Zeile hat zwíschen 50 und 150 Byte.
Wenn ich jetzt 1000 Zeilen vor springen will, ist das dann noch sinnvoll?

Dieser Post wurde am 16.02.2004 um 21:33 Uhr von AlfameisterT editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.02.2004, 21:40 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


hm ich weiss das leider auch nicht aber ich würde mal vermuten das es sinnvoller ist immer mehrere zeichen in einen buffer zu lesen und dann das array durchzugehen... würde behaupten das ist schneller als die ständigen dateizugriffe...wobei das vermutlich insbesondere davon abhängt wie die funktionen (fread, fgetc usw.) implementiert sind... vermutlich eignet sich fgets hierfür am besten... einfach immer z.b. versuchen 1024 bytes einzulesen.. ist das letzte zeichen kein newline dann ist das zeilenende noch nicht erreicht und so lange weiter fgets verwenden bis das zeilenende erreicht ist und dann den linezähler ein hochsetzen und weiterzählen...

allerdings wenn du was bestimmtes aus eine so langen datei lesen willst hört sich das für mich verdammt nach nem datenbankersatz an... wenns dir da auf performance ankommt bietet sich bei php dann mysql an
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
17.02.2004, 19:22 Uhr
AlfameisterT



Ok Danke erstmal...
So habe das ganze jetzt doch ganz anders (vernünftiger) gelöst
Aber da entstanden schon wieder neue Probleme
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ PHP ]  


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: