Zeilenumbruch nach jedem 10. Zeichen

void setup()
 {Serial.begin(9600);
  //Only 10 in a row
  for(int i=1; i<=100; i++)
   {if(i%10==0)  Serial.println("\n----------");
    Serial.print(i);
   }
 }

void loop() {} //do nothing here

Ich möchte die Ausgabe über Serial so haben,
das nach jedem 10. Zeichen ein Zeilenumbruch erfolgt.

Mit meiner Idee hier klappt das nicht ganz,
liegt der Fehler im MODULO operator?

Hallo,

na ja , was willst Du denn? Wenn das i >9 ist hat es zwei Zeichen. Mit Serial.print(i) werden dann auch die zwei Zeichen ausgegeben. Wenn Du das nicht willst kannst du ab i>9 ja jeweils nach 5 i einen Zeilenvorschub machen.

Heinz

du hast den Umbruch nicht nach jedem 10. Zeichen, sondern nach jeder 10. Zahl(!)

so siehst du es schöner:

void setup()
{ Serial.begin(115200);
  //Only 10 in a row
  for (int i = 1; i <= 100; i++)
  {
    if (i % 10 == 0)
      Serial.println("\n----------");
    Serial.print(i);
    Serial.print(" ");
  }
}

void loop() {} //do nothing here

wenn du wirklich nach 10 Ziffern einen Umbruch brauchst, müsstest du die ausgegebenen Zeichen a) je print ermitteln und b) summieren und dann bei 10 Zeichen den Println machen.

Oder tiefer in der Serial.print eingreifen und dort mitzählen (genauer: in der write) - aber ich glaube das sollst du nicht wirklich wollen ;-).

Was willst du denn genau machen?

noiasca:
Oder tiefer in der Serial.print eingreifen und dort mitzählen (genauer: in der write) - aber ich glaube das sollst du nicht wirklich wollen ;-).

Wieso print liefert doch die Anzahl der ausgegebenen Zeichen als Returnwert.

Gruß Tommy

Hallo,

genau genommen ist die Sache schon etwas doof.

1 zeile 123456789 macht 9 Zeichen man müsste die 10 trennen also

1 Zeile 1234567891
2 Zeile 0111213141
3 Zeile 5...

mach also Sinn mit 0 anzufangen wie meistens :slight_smile:

Gruß Heinz

Wieso print liefert doch die Anzahl der ausgegebenen Zeichen als Returnwert.

z.B. das 1..10 ist ein Problem. Nach der 9ten Stelle ist noch nicht Zeit für ein LF, wennst dann 10 geprintet hast, ist es zu spät.

PSTR und strlen wäre ein möglicher Ansatz. Oder der String-Ansatz von Combie.

Wobei ich den Ansatz stur nach jedem 10. Zeichen einen Zeilenvorschub zu senden und damit zusammenhängende Informationen zu zerreißen als krank empfinde. Zumindest, wenn man es allgemein betrachtet und es keine speziellen Umfeldbeschränkungen gibt.

Gruß Tommy

noiasca:
du hast den Umbruch nicht nach jedem 10. Zeichen, sondern nach jeder 10. Zahl(!)

wenn du wirklich nach 10 Ziffern einen Umbruch brauchst, müsstest du die ausgegebenen Zeichen a) je print ermitteln und b) summieren und dann bei 10 Zeichen den Println machen.

Oder tiefer in der Serial.print eingreifen und dort mitzählen (genauer: in der write) - aber ich glaube das sollst du nicht wirklich wollen ;-).

Was willst du denn genau machen?

Ohh danke, dann tut es ja, ich habe übersehen das ab 9 die ausgabe 2stellig wird :frowning:
vielen Dank!