Forum: Compiler & IDEs char array nach carriage return splitten


von Raphael B. (farin_94)


Lesenswert?

Hei Leute

Ich hoffe der Titel ist nicht zu verwirrend. Ich versuche ein Char Array 
nach carriage returns bzw. new line feeds zu splitten. Da der \n ja in 
avr-gcc ein einziger char ist(mit dem ascii wert 10) sollte ich ihn ja 
rausfiltern können. Was mache ich denn mit folgendem Code falsch? =/
1
void drawtitles(char text[])
2
{
3
  for(int i = 0; i < (strlen(text)); i++)
4
  {
5
    if((char)text[i] == '\n')
6
    {
7
      //New Line feed found. Do something...
8
      //Aber ich komm hier gar nie hin. =(
9
    }
10
  }
11
}
12
13
//Aufruf
14
drawtitles("1. Eintrag\r\n2. Eintrag\r\n3. Eintrag\r\n4. Eintrag\r\n5. Eintrag\r\n");
Ich krieg' hier noch die Krise. =(

von Peter II (Gast)


Lesenswert?

Raphael B. schrieb:
> Was mache ich denn mit folgendem Code falsch?

nichts.

unschön und unötig ist dieser cast

> if((char)text[i] == '\n')

es geht auch ohne
if(text[i] == '\n')


so jetzt muss du uns erstmal sagen, was nicht geht.

von Raphael B. (farin_94)


Lesenswert?

Kaum gepostet schon funktionierts...

Ich hatte eine Variable falsch benamst und daher i zweifach hochgezählt 
und somit war die for-schleife fertig bevor überhaupt ein new line feed 
erkannt werden konnte...

Der obige Code funktioniert ;-)

MfG und Trotzdem Danke an Peter

Farin

von Karl H. (kbuchegg)


Lesenswert?

Einzig der strlen in der Schleifenbedingung ist unschön, da sich (dem 
Anschein nach) der String sowieso nicht ändert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.