1 | uint16_t Fkt(uint8_t *Wort, uint8_t *Buf) |
2 | {
|
3 | |
4 | uint16_t Wortsize = sizeof(Wort); |
5 | ...
|
6 | }
|
7 | |
8 | |
9 | ret = Fkt("MeinWort", &MeinBuf); |
Das Problem ist, Wortsize ergibt beim Debuggen stets 4. Woran liegt es?
|
Forum: Mikrocontroller und Digitale Elektronik sizeof von Stringarray
Das Problem ist, Wortsize ergibt beim Debuggen stets 4. Woran liegt es? size schrieb: > Das Problem ist, Wortsize ergibt beim Debuggen stets 4. > > Woran liegt es? Wort ist als Zeiger definiert. Du arbeitest offensichtlich auf einem 32-Bit-System. Da sind die Zeiger 4 Byte groß... C-Grundlagen! Wort ist ein Zeiger. Und mit sizeof bekommst du die Größe vom Zeiger und nicht von dem, worauf er zeigt. Du musst die Größe mit einem weiteren Parameter übergeben. ja die Vermutung hatte ich auch schon, aber wie muss ich das denn nun machen, dass ich die Anzahl an Buchstaben in meinem Array bekomme? @ size (Gast)
>Das Problem ist, Wortsize ergibt beim Debuggen stets 4.
Logisch, das ist die Länge des POINTERS wort, welcher ein Pointer auf
einen Char ist. Die Länge deines Strings kann man so nicht ermittlen,
dafür gibt es die Funktion strlen(); Die Länge eines allgemenen Arrays
kann so auch nicht bestimmt werden, das geht nur mit konstanten Arrays.
über ein Pointer geht es nie! Und Arrays/Strings werden in C IMMER als
Pointer übergeben.
Benutze strlen() ; http://stackoverflow.com/questions/15000544/get-string-size-in-bytes-in-c Stackoverflow ist IMHO eh die bessere Adresse für Fragen zur Programmierung. Wenn es ein C-String ist (da wäre char* besser), kannst du dies durch suchen des Stringterminators '\0' feststellen (das macht strlen). :
Bearbeitet durch User
sizeof bei einem Array funktioniert dort, wo das Array auch definiert ist. Dann liefert es die Größe (in Bytes) vom Array und nicht die Anzahl Zeichen, die dort abgelegt sind. In deinem Fall ist das Stringliteral auch nur ein const char*. Du darfst es also nicht verändern es gibt die Funktion strlen(Wort); Wenn du weißt, dass du einen String verwendest, dann bekommst du so die Länge Ordner schrieb: > Benutze strlen() ; > > http://stackoverflow.com/questions/15000544/get-st... > > Stackoverflow ist IMHO eh die bessere Adresse für Fragen zur > Programmierung. Da müsste man Englisch für können. Das ist für den modernen Copypaste Programmierer natürlich eine Hürde. THOR schrieb: > Ordner schrieb: >> Benutze strlen() ; >> >> http://stackoverflow.com/questions/15000544/get-st... >> >> Stackoverflow ist IMHO eh die bessere Adresse für Fragen zur >> Programmierung. > > Da müsste man Englisch für können. Das ist für den modernen Copypaste > Programmierer natürlich eine Hürde. Egal, die Antwort mit der höchsten Zustimmung wird kopiert und solange verändert, bis der Compiler nicht mehr meckert. 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.
|
|