pointer



  • hallo,
    habe eine frage bez. einer pointergeschichte!

    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>
    }
    

    vielen dank
    für eure hilfe



  • strcpy() verwenden.



  • 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


Anmelden zum Antworten