*char in char umwandeln

3Cyb3r

Erfahrenes Mitglied
wie kann ich nochml eine *char in ein normales char Array packen?
z.B. habe ich :
Code:
char * pch;
char str2[2]
.....//hier wird etwas in pch geschrieben
//strncpy(str2,pch,2)so bräucht ich das weiß aber nicht mehr wie das geht
 
Das funktioniert doch, ich versteh dein Problem nicht:

C++:
char meldung[] = "Hallo";
char* pch = &meldung[0];   // bzw. nur "= meldung;", weil, wie gestern gelernt, ein Array auch nur ein Zeiger ist?

char str2[2];

strncpy(str2, pch, 2);
 
Zuletzt bearbeitet:
thx ja das wusste ich auch noch habe es auch mit & prboert aber [o] vergessen omg ich Horst :D

Ach noch etwas:
Code:
  char * pch;
    pch = strtok (buffer,":");
	while (pch != NULL)
	{
		printf ("%s\n",pch);
		pch = strtok (NULL, ":");
	}
//int i= atoi(pch); wie muss diese Zeile aussehen?
 
Deine Zeile past soweit, in pch muss halt was Vernünftiges drinnenstehen...
aber was bezweckst du mit der Schleife oben?
 
ach stimmt die Schleife ist ein bischen bumm brauch noch eine tmp Variable. Die schleife oben zerlegt buffer in einzenlne Stücke und wollte es erst einaml mit dem letzten Element test.
 
Naja :-(
Sagen wirs besser so: Wenn man das folgendermaßen castet:
C++:
char meldung[] = "Hallo";
char* pch = (char*)meldung;

Dann zeigt pch auf das 'H'. Das heißt doch, dass letztendlich "meldung" irgendwie auf das erste Element "zeigt".

Und auch wenns totaler Blödsinn ist, hast du recht:
man kann sich da auf implizit cast verlassen
;)
 
Hallo,
Naja :-(
Sagen wirs besser so: Wenn man das folgendermaßen castet:
C++:
char meldung[] = "Hallo";
char* pch = (char*)meldung;

Dann zeigt pch auf das 'H'. Das heißt doch, dass letztendlich "meldung" irgendwie auf das erste Element "zeigt".
;)
ja das stimmt so schon.

Dennoch ist ein Array nicht dasselbe wie eine Zeigervariable, da man ein Array nicht umbiegen kann, einen Zeiger hingegen schon. Das Arraysymbol steht vielmehr für eine Adresse auf dem Stack. Deswegen sollten meldung und &meldung theoretisch auch dieselben Adressen sein, nämlich genau die die auf den Stackbereich zeigen wo dein Feld allokiert wurde.

Anders sieht das mit einer Zeigervariablen aus. Dessen Inhalt ist nämlich manipulierbar. Die Zeigervariable selber wird auch auf dem Stack angelegt. Deshalb gilt pch != &pch, da pch den Variableninhalt (also die Adresse die im Zeiger gespeichert wird) symbolisiert und &pch wie gehabt die Adresse der Zeigervariablen auf dem Stack.

Gruß,
RedWing
 
Zurück