mikrocontroller.net

Forum: Compiler & IDEs Int String länge bestimmen


Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend,

ich programmiere momentan in C ein kleines Programm.

Nun habe ich das Problem, dass ich die Länge eines String bestimmen 
möchte.
Mein Code sieht so aus:

uint16_t fkt1[] = {11,12,45,1111,141,1616};

uint16_t laenge;

laenge = strlen(fkt1);


da die Anzahl der Strings in fkt1 immer unterschiedlich sein kann würde 
ich gerne die Länge mit strlen bestimmen.

Die Funktion strlen benötigt aber einen char string weswegen ich immer 
eine Warnung erhalte und er mir die Richtige länge nicht bestimmt.

Gibt es dafür eine Lösung oder andere Funktion?

Für eine Lösung wäre ich sehr Dankbar


Grüße
Christian

Autor: Antwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn nicht JEDER String, egal wie lang er ist und was drin steht, mit 
demselben Zeichen abgeschlossen wird (wie es bei char strings bsw. das 
"\0" ist) ist es nicht möglich im Nachhinein die Länge zu bestimmen.

Autor: !Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>uint16_t fkt1[] = {11,12,45,1111,141,1616};
Was ist den das für ein Dingen? Ein String sieht für mich so
 char string[]="Unterhose";
aus.

Autor: Yalu X. (yalu) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Nun habe ich das Problem, dass ich die Länge eines String bestimmen
> möchte.

fkt1 ist kein String, sondern ein Array.

> da die Anzahl der Strings in fkt1 immer unterschiedlich sein kann
> würde ich gerne die Länge mit strlen bestimmen.

Auch die Elemente von fkt1 sind keine Strings, sondern Zahlenwerte vom
Typ uint16_t. Die Anzahl der Elemente ändert sich auch nicht.

Ich nehme an, du möchtest die (konstante) Anzahl der Elemente eines
Arrays bestimmen. Das geht bspw. mit
  laenge = sizeof fkt1 / sizeof fkt[0];

Dabei wird die Größe (in Bytes) des gesamten Arrays dividiert durch die
Größe eines einzelnen Elements. In deinem Beispiel sollte dies 6
ergeben.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.