String To Char To String ?
-
Moinsen,
hab da grad nen Problem mit der Konvertierung von String nach *Char.
Code:
AnsiString Dot = Label1->Caption;
char *str1 = Dot.c_str();
char Fg[10];
strncpy (Fg, str1, 5);
Label2->Caption = Fg;Wenn Label1 = Hello World; dann ist Label5 = Hello - oder nicht ?
Er zeigt mir auch "Hello" an, jedoch in so einem Format: HelloP#j5ä=j&k.d usw.
Heißt für mich irgendeine Konvertierung funktioniert hier nicht richtig, nur welche ?
Thx 4 Answers
Mfg Pixtar
-
Laut Debugger stimmt alles, bei mir steht auch immer "Hello", vielleicht funzt ja auch dein strncpy nicht richtig, denn in der Hilfe steht auch:
[..]wird eine entsprechende zusätzliche Anzahl von Nullzeichen an destination angehängt[..]
Versuch einmal vorher dein Chararray auf 0 zu setzen:
for(int i=0;i<strlen(Fg);i++) //strlen ergibt hier 10, benötigt include-Datei string.h (glaub ich) { Fg[i]='\0'; }Versuchs mal!
-
Die Variable vom Typ char muss nach der Funktion strncpy() noch terminiert werden.
Fg[10] = 0x00;
Dann stimmts wieder
*g*Dennoch bleibt ein Problem und zwar ist es die Funktion strncpy() .. ich kann ihr lediglich einen Endwert zuweisen aber keinen Anfangswert, so das ich jeweils Blöcke aus einer Variablen heraus kopieren könnte.
Gibt es da noch ne andere Funktion die dies beherrscht ?
Mfg Pixtar
-
Hallo
Vermutlich mittels Pointerarithmetik und memcpy.
Aber wozu? Warum nicht gleich AnsiString-Methoden benutzen?bis bald
akari
-
Gefunden auf http://entwickler-forum.de/
Code:
AnsiString a;
AnsiString b;a = "Hello World";
b = a.SubString (7,5);b = "World";
Besten Dank, das oben von entwickler-forum.de/ ist genau das was ich suche!
-
Apropo memcpy:
Prototyp
*void *memcpy(void *dest, const void src, size_t n);
void *_wmemcpy(void *dest, const void *src, size_t n);Beschreibung
Kopiert einen Block von n Bytes.
memcpy ist unter UNIX System V verfügbar.
Die Funktion kopiert n Bytes von src nach dest. Überlappen sich scr und dest, ist das Verhalten von memcpy undefiniert.
Rückgabewert
**
memcpy liefert dest zurück.**Müsste das nicht heißen char *memcpy(...)???
-
Hallo
Nein denn memcpy ist ja nicht zum kopieren von Strings, sondern von typlosen Bytes. Du kannst mit memcpy alles mögliche kopieren wenn du weißt was du tust.
bis bald
akari