Pointer in Array bzw. Array aus Funktion auslesen



  • Okay ich habs verstanden, aber ich wäre im leben nicht selbst drauf gekommen...

    Du verdammtes Genie 😃



  • ach verdammt!

    Stimmt....

    okay deine lösung is da ziemlich elegant...

    Vielen Dank hast mir sehr geholfen...! _D 😃



  • Ok 😃

    nächste Frage

    Ich möchte die Funktion jetzt als void methode und hab

    void extract2(char* input, char** output)
    

    als ansatz gegeben...

    void extract2(char* input, char** output)
    {
    
        char* ptr; 
        for(ptr = input; *ptr != '\0'; ptr++) 
        { 
            if(*ptr == ':') 
            { 
                if(*(ptr+1) == ':') 
                { 
                   *output = &*(ptr+2); 
                } 
            } 
        } 
    
    	char* suff = *output;
        if(suff) 
            printf("Das Suffix lautet %s", suff); 
        else 
            printf("Kein Suffix!"); 
    }
    

    soweit siehts eig ganz nett aus aber ich hab da iwie echt ein problem mit diesen zeigen ... als ausgabe kann natürlich kein return mehr stehen.. jetzt soll ich das aber als pointer auf einen pointer ausgeben! was soll das sein? **char output -.-

    Ich seh aber auch grad das ich einen einfachen pointer mit &*beschreib..

    bitte ich bin so unbeholfen..



  • CrazyFisch schrieb:

    Ok 😃

    nächste Frage

    Ich möchte die Funktion jetzt als void methode und hab

    void extract2(char* input, char** output)
    

    als ansatz gegeben...

    Der Trick ist erstmal der richtige Aufruf:

    int main()
    {
        char* suff;
        extract("h::al::lo",&suff);
        if(suff)
            printf("Das Suffix lautet %s", suff);
        else
            printf("Kein Suffix!");
        return 0;
    }
    


  • Ja 😃 ich weis nicht was ich sonst in dem void ausgeben soll den main aufruf hab ich soweit auch noch von dir vorhin aber ich weis net wie ich des machen soll

    zb an der stelle

    *output = &*(ptr+2);
    

    bekomme ich immer nen fettes error bzw muss ich immer wenn der compiler an der stelle ist in abwürgen weil er sonst nichts macht



  • CrazyFisch schrieb:

    bitte ich bin so unbeholfen..

    Die Aufgaben sind kacke. Man weiß, was der Aufgabensteller sich vorgestllt hat, oder man weiß es nicht und steht vor einer Wand, die man selber nicht erklimmen kann.



  • CrazyFisch schrieb:

    Ja 😃 ich weis nicht was ich sonst in dem void ausgeben soll den main aufruf hab ich soweit auch noch von dir vorhin aber ich weis net wie ich des machen soll

    zb an der stelle

    *output = &*(ptr+2);
    

    bekomme ich immer nen fettes error bzw muss ich immer wenn der compiler an der stelle ist in abwürgen weil er sonst nichts macht

    *output = &*(ptr+2);
    heisst
    wo output hinzeigt (und output zeigt auf suff der main), da schreibe folgendes rein:
    (soweit perfekt)
    die Adresse des Anfangs des Suffix'. Passt doch.



  • Im moment sieht es so aus..

    void extract2(char* input, char** output)
    {
    
        char* ptr; 
        for(ptr = input; ptr != '\0'; ptr++) 
        { 
            if(*ptr == ':') 
            { 
                if(*(ptr+1) == ':') 
                { 
                    *output = ptr+2; 
                } 
            } 
        } 
    
    	output;
    
    }
    
    int main() 
    { 
    	char* suff;
    	extract2("h::al::l::o",&suff);
        if(suff) 
            printf("Das Suffix lautet %s", suff); 
        else 
            printf("Kein Suffix!"); 
        getchar();
    }
    

    ich weis einfach nicht wie ich das jetzt zurückgeben soll..



  • CrazyFisch schrieb:

    Im moment sieht es so aus..

    void extract2(char* input, char** output)
    {
    	
        char* ptr; 
        for(ptr = input; ptr != '\0'; ptr++) 
        { 
            if(*ptr == ':') 
            { 
                if(*(ptr+1) == ':') 
                { 
                    *output = ptr+2; 
                } 
            } 
        } 
        
    	output;
    
    }
    
    int main() 
    { 
    	char* suff;
    	extract2("h::al::l::o",&suff);
        if(suff) 
            printf("Das Suffix lautet %s", suff); 
        else 
            printf("Kein Suffix!"); 
        getchar();
    }
    

    ich weis einfach nicht wie ich das jetzt zurückgeben soll..

    In der Laufbedingung fehlt der *
    Sonst alles richtig.

    Die Zeile

    output;
    

    bewirkt nichts und kann weg.

    Edit: Keine Rückgabe nötig, weil

    *output = ptr+2;
    

    schon direkt in die suff der main() schreibt.

    *output=0;
    

    sollte noch an den Anfanng der extract2, um zu erkennen, wenn kein :: überhaupt da war.



  • Boar 😃

    Super geil Danke!

    Wirklich vielen Dank hab endlich die pointer geschichte verstanden!
    Naja wenigstens ein bischen 😃

    Vielen Lieben Dank! 🙂 👍


Anmelden zum Antworten