title image


Smiley Re: char to char*
Hallo Ralf,



ein paar Anmerkungen zu deinem Vorgehen:



1.



char* str = "Guten Morgen";





das solltest du nicht tun, immer, wenn man vor hat, einen String zu ändern, sollte man die "Array-Schreibweise" verwenden, damit stellst du außerdem sicher, daß noch genug (Speicher-)Platz im String für das Anhängen von weiteren Zeichen vorhanden ist, also so:





/* ausreichend Platz für Zeichen belegen und für Null-Bytes sorgen(muß dann später nicht mit angehängt werden, wenn einzelne Zeichen angehängt werden sollen, sonst geht natürlich auch einfach char str[255] = "Ebenfalls Guten Morgen";)*/

char str[255] = {0,};

/* str belegen */

strcpy(str, "Ebenfalls Guten Morgen");





ist es besser..



2.

du schreibst:



klar, charbuffer ist eigentlich ein interner Interger mit 32bit.

Und 32 bit in 8 bit zu packen gibt probleme.



das ist eigentlich nicht das Problem, charbuffer besteht aus einem Byte, also 8 Bit, und das Problem ist, daß char und char* unterschiedliche Datentypen sind..



3.

du schreibst:

Wie kann ich jetzt den char in ein char* umwandeln um das eingelesene Zeichen an str anzuhängen??



du mußt eigentlich nichts umwandeln, das Zeichen liegt ja schon im "richtigen" Format vor, es muß nur noch angehängt werden, z.B. so





/* Zeichen (direkt) anhängen */

str[strlen(str)] = charbuffer;





wenn, wie ich oben geschrieben habe, nur ein char str[255] = "Ebenfalls Guten Morgen"; passiert ist, dann muß man sich auch um einen korrekten String-Abschluß kümmern:





/* String-Länge merken */

int i = strlen[str];

str[i] = charbuffer;

/* Null-Byte */

str[i + 1] = '\0';





und



4.

ps. hab was über itoa gelesen, wird von meinem compiler nicht unterstützt. Ich verwende gcc auf einer Linux Maschine.



itoa brauchst man nur, um int-Werte in ihre "String-Darstellung" zu konvertieren (also aus 65 mach "65", so daß du bei einem Versuch mit itoa nicht das Zeichen mit dem Code 65 (das "A"), sondern den String "65" bekommen würdest, ganz sicher nicht das, was du wolltest)

außerdem noch wichtig

itoa gehört nicht zu ANSI, deshalb ist es gut, daß du vom gcc "gezwungen" wirst, statt itoa sprintf zu nehmen (falls du es doch mal brauchst), damit du (naja, besser dein Programm) kompatibel für andere Plattformen bleibst









geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: