Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Dalon

Frischling

  • »Dalon« ist der Autor dieses Themas

Beiträge: 81

Wohnort: Berlin

Beruf: Freiberufler

  • Private Nachricht senden

1

24.02.2008, 12:49

Erste Zeile eines Textes löschen [GELÖST]

Hallo, ich hätte eine Frage...

Angenommen ich habe einen Text, der mit '\n' in mehrere Zeilen getrennt ist:

C-/C++-Quelltext

1
char* pcText = "Text\nmit\nmehreren\nZeilen";


Nun sind es in diesem Fall 4 Zeilen. Ich benötige nun eine Funktion (wahrscheinlich selbst geschrieben ^^) die von diesem Text nur die letzten X Zeilen angibt. Oder noch genauer:

C-/C++-Quelltext

1
2
3
4
void getLastLines(const char* pcText, char* pcBuffer, int iNumLines)
{
    // ...

}


Hat da jemand einen Vorschlag für mich? Bisher habe ich es mal mit "strtok" versucht aber nach einer Zeit stürzt das ganze einfach ab... insbesondere bei Umlauten (äöüß).

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

2

24.02.2008, 13:02

Re: Erste Zeile eines Textes löschen

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void getLastLines(const char* pcText, char* pcBuffer, int iNumLines)
{
  int line_counter = 0, i=0;

  // Zeilen zählen

  while (pcText[i])
  {
    if (pcText[i++] == '\n')
      ++line_counter;
  }

  // Wenn das letzte Zeichen ein Zeilenumbruch ist nicht als eigene Zeile zählen

  if (pcText[i-1] == '\n')
    --line_counter;

  // Zeilen ermitteln, die übersprungen werden sollen

  line_counter -= iNumLines;

  // TODO: i auf Position der ersten Zeile die in den Buffer soll setzen


  // TODO: ab Position i in den Buffer kopieren

}


Viel erfolg beim fertig implementieren ;)

Dalon

Frischling

  • »Dalon« ist der Autor dieses Themas

Beiträge: 81

Wohnort: Berlin

Beruf: Freiberufler

  • Private Nachricht senden

3

24.02.2008, 13:04

Schon mal vielen Danke für den guten Ansatz. :)
Mache mich gleich mal an die Implementierung.

EDIT: Erledigt, vielen Dank! :) (Übrigens, du hast bei der Schleife vergessen i zu erhöhen *G*

neido

Treue Seele

Beiträge: 225

Wohnort: Wien

  • Private Nachricht senden

4

24.02.2008, 15:56

Zitat von »"Dalon"«

Schon mal vielen Danke für den guten Ansatz. :)
Mache mich gleich mal an die Implementierung.

EDIT: Erledigt, vielen Dank! :) (Übrigens, du hast bei der Schleife vergessen i zu erhöhen *G*


nö, hat er nicht:
pcText[i++] liefert pcText und erhöht i danach

Dalon

Frischling

  • »Dalon« ist der Autor dieses Themas

Beiträge: 81

Wohnort: Berlin

Beruf: Freiberufler

  • Private Nachricht senden

5

24.02.2008, 22:58

Hmmm... dann hatte ich das nicht mit eingegeben? Egal xD Es ist gelöst. ^^

Werbeanzeige