pointer
-
stdnt schrieb:
strcpy() verwenden.
Ich sehe nicht wie das das Problem des OP lösen sollte...
gvb schrieb:
ich möchte den "string" data im main durch die funktion changeString() ändern.
krieg aber immer folgendes warning:
passing argument 2 of changeString form incompatible pointer type<snip> int main() { <snip> char* data = NULL; <snip> changeString(&data) <snip> } changeString(char **data) { <snip> *data = "xyz"; <snip> }
Der Code passt garnicht zu deiner Warnung. Erstens sollte der Code (von den sinnfreien <snip> mal abgesehen) wunderbar kompilieren, zweitens bemängelt er hier, dass was am zweiten Argument der Funktion nicht passt. Dummerweise hat deine hier gepostete Funktion nur ein Argument. Da kann dir nur Gott helfen...
-
stdnt schrieb:
strcpy() verwenden.
hallo,
denke nicht, dass dies das problem löst.zur Erklärung:
in der funktion changeString werden daten aus einem file gelesen (und nicht wie im codebeispiel, der einfachheit halber dargestellt). diese daten
sollen dann nachhaltig im char* data gespeichert werden.int size; FILE* fp = NULL; <snip> *data = (char*) malloc (size); fread(*data, 1, size, fp);
die fehlermeldung tritt im main() bei aufruf der funktion changeSting auf.
danke
lg
-
@TIM:
du hast recht - habe den code stark vereinfacht.
im grunde bemängelt er halt diesen übergabeparameter &data.
stimmt diese Art der Übergabe grundsätzlich - oder würdet ihr
die sache anders lösen?
-
Poste doch mal ein bisschen mehr Code.
-
Tim schrieb:
Da kann dir nur Gott helfen...
gott kann nicht programmieren, aber vielleicht der teufel...
-
hi,
also ich will einfach irgendeinen char* durch daten welche in einer funktion
generiert werden ändern. wie mach ich das - bzw. is das mal so korrekt und
wie behandle den char in der funktion changeChar?int main() { char* xy; changeChar(&xy); return 0; } void changeChar(char **xy) { } glaube mehr code is nicht erforderlich.
danke für eure hilfe
lg
-
Du übergibst einer Funktion changeChar einen Pointer und dieser zeigt irgendwo hin:
-
Ich glaube, du meinst das:
void changeChar(char *); int main() { char* xy = (char *) malloc(sizeof(char)); changeChar(xy); // Now xy has value 'a' return (0); } void changeChar(char* xy) { *xy = 'a'; }
Zeh Mau
-
hi - danke für die hilfe!
ja so funktioniert es - allerdings will ich der funktion nicht
den string übergen sondern einen pointer auf den string.
-
gvb schrieb:
allerdings will ich der funktion nicht den string übergen
Das machst du auch nicht!
gvb schrieb:
sondern einen pointer auf den string.
Genau das machst du mit der Funktion!
Zeh Mau