Ermitteln der Zeilen eines Char-Arrays

Rene Albrecht

Erfahrenes Mitglied
Hallo,

wie kann ich in C ermitteln, wieviele Zeilen ein Char-Array hat? In der Theorie würde ich die Anzahl der Zeilenumbrüche zählen und mit 1 addieren. Aber welchen Code hat der Zeilenumbruch? Hat jemand von Euch vielleicht einen Quelltext hierfür?

Gruß & Dank
René
 
Hi.

Also die Markierung des Zeilenendes ist abhängig vom Betriebssystem. Unter Windows wird das Zeilenende durch CR/LF (CarriageReturn/LineFeed == "\r\n") markiert, bei Macintosh Dateien durch CR und bei Dateien für Unix Betriebssysteme wird ein einfaches LF verwendet.

Allerdings wird meist von der C Bibliothek wenn Dateien im Textmodus verarbeitet werden die Zeilenende-Markierung beim Einlesen in ein einfaches LF ('\n') umgewandelt. Bei der Ausgabe geschieht dann das Gegenteil.

Code:
#include <string.h>

int zaehle_zeichen (const char* heuhaufen, char nadel) {
  char* c = heuhaufen;
  int counter = 0;

  if (c != NULL)
    while (( c = strchr (c, '\n')) != NULL)
      counter++;

  return counter;
}

int zeilen = zaehle_zeichen ("x\nxx\nxxx\nxxxx\n", '\n');
 
Äh deepthroat welchen Compiler benutzt du? - Bzw. hast du das getestet? Weil du castest da von const char* zu char*, das sollte nicht funktionieren :eek:
 
Hi.

Getestet hab ich "natürlich" nicht :-(

Da fehlt tatsächlich noch ein Cast auf char*.

Aber viel schlimmer ist, dass ich da eine Endlosschleife gebaut hab. Man sollte eben doch nicht spät abends, nachdem der verp***te Windows-Rechner wieder mal völlig abgeschmiert ist und ich ihn grade so wieder hinbekommen hab, nicht noch solche Sachen schreiben sondern lieber schlafen gehen. ;)

Ok, 2ter Versuch (getestet):
Code:
int zaehle_zeichen (const char* heuhaufen, char nadel) {
  char* c = (char*)heuhaufen;
  int counter = 0;

  if (c != NULL)
    while (( c = strchr (c, '\n')) != NULL) {
      counter++;
      c++;
    }

  return counter;
}
 
Zurück