char Arrays variabel

Gast #5100576
Guten Morgen,
eventuell kann mir jemand helfen.
Ich habe ein array "buffer[20]". Wenn ich jetzt mit fget nur 5 zeichen 
einlesen, möchte ich auch nur fünf Zeichen an eine Funktion übertragen. 
Hintergrund ist, dass ich die maximale Größe vorher festlegen möchte, 
aber am Ende von einem anderen Programm aus nur so viele Zeichen lesen 
möchte, wie geschrieben. sizeof(buffer) liefert nämlich stets 20 als 
integer-Wert.
Gast
Wenn hinter deinen eingelesenen Zeichen nullen stehen (0 oder '\0'), 
dann bekommst du die laenge der Zeichen mit strlen().

http://www.cplusplus.com/reference/cstring/strlen/
1
size_t strlen ( const char * str );
2

3
Get string length
4
Returns the length of the C string str.
5

6
The length of a C string is determined by the terminating null-character:
7
A C string is as long as the number of characters between the beginning of
8
the string and the terminating null character (without including the
9
terminating null character itself).
10

11
This should not be confused with the size of the array that holds the
12
string. For example:
13

14
char mystr[100]="test string";
15

16
defines an array of characters with a size of 100 chars, but the C string
17
with which mystr has been initialized has a length of only 11 characters.
18
Therefore, while sizeof(mystr) evaluates to 100, strlen(mystr) returns 11.
Tim schrieb:
> sizeof(buffer) liefert nämlich stets 20 als
> integer-Wert.

Das Problem löst sich nach Übergabe des buffers als Parameter in eine 
Funktion von ganz alleine. In der Funktion kannst du die Größe gar nicht 
mehr ermitteln.

Die Lösung steht im Beitrag vorher: C-Strings haben als Ende-Kennzeichen 
/0.

Oliver

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.