Einzelnen Beitrag anzeigen

OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#10

Re: [Ansi C] Long in Bytes aufteilen

  Alt 9. Okt 2007, 20:11
Die Länge eines nicht initialisierten Strings ist nicht definiert.

Du erzeugst einen String, in dem irgendetwas drin steht. strlen() wird jedoch bis zur ersten 0 wandern und die Bytes bis dahin zählen.
Edit: Oh, und was die 24 angeht: Diese 24 ist keine 24. Im Speicher hast du eine Binärrepräsentation, deine 24 hingegen ist dezimal. Also 2410 ist nicht dasselbe wie eine 24 und eine 10.

Davon abgesehen:
1. char* gehört nicht in C++-Programm. Benutze std::string. Dasselbe gilt für Funktionen wie ltoa oder strlen.
2. In einer Funktion Speicher zu reservieren und den Zeiger darauf zurückzugeben ist schon ein wenig böse. Eher solltest du (C-Style) den Puffer als Ausgabeparameter anlegen oder (C++-Style) entweder std::string oder eine eigene Klasse verwenden.
3. Du gibst den Speicher, den du in der Schleife reservierst, niemals frei.
4. Zwei Variablen im for-Kopf zu verwenden ist zwar möglich, aber schlechter Stil. Die Lektüre von ein wenig Scott Adams oder auch des guten alten C++-FAQ Lite sollte hier Abhilfe schaffen, oder Code Complete von Steve McConnell.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat