Array als Kopie an Funktion übergeben



  • unskilled schrieb:

    #include <vector>
    
    void foo(const std::vector<void*>& zeiger_array)
    {
      /* ... */
    }
    
    int main()
    {
      std::vector<void*> zeiger_array;
      zeiger_array.push_back(static_cast<void*>(&var1);
      zeiger_array.push_back(static_cast<void*>(&var2);
      zeiger_array.push_back(static_cast<void*>(&var3);
      zeiger_array.push_back(static_cast<void*>(&var4);
      zeiger_array.push_back(static_cast<void*>(&var5);
    }
    

    und: doch, geht.

    bb

    iii, void Zeiger



  • unskilled schrieb:

    ...
    

    und: doch, geht.

    bb

    Die static_casts sind unnötig und hässlich.

    Hacker schrieb:

    iii, void Zeiger

    iii, ein Hacker



  • Squicky schrieb:

    Dieses Array möchte ich nun als Kopie an die Funktion
    sscanf (zeichenfolge, formatzeichenfolge, zeigerarray)
    übergeben.

    Wie und warum?

    Squicky schrieb:

    Wie kann ich ein Array (Bytefolge) einer Funktion als Kopie (auf dem Stack?!?) übergeben?

    Überhaupt nicht. sscanf gibt das nicht her.



  • 314159265358979 schrieb:

    unskilled schrieb:

    ...
    

    und: doch, geht.

    bb

    Die static_casts sind unnötig und hässlich.

    Hacker schrieb:

    iii, void Zeiger

    iii, ein Hacker

    Iii, eine Transzendente Zahl



  • Ein bisschen Bi schadet nie. gnihihi



  • 314159265358979 schrieb:

    Ein bisschen Bi schadet nie. gnihihi

    😃



  • Zum Teil ja.
    Dies funktioniert.

    struct int2 {
        unsigned int a[2];
    };
    
    int main() {
        char txt[] = "abc 13 abc 25";
        char format[] = "abc %d %*s %d";
        int a, b;
        a = 0;
        b = 0;
    
        struct int2 ar_int2;
        ar_int2.a[0] = (unsigned int) &a;
        ar_int2.a[1] = (unsigned int) &b;
    
        int ret = sscanf(txt, format, ar_int2);
    
        cout << "ret: " << ret << " | " << a << " | " << b << endl;
    
        return 0;
    }
    

    Aber diese Lösung arbeitet leider mit einer festen Arraylänge (2), und deshalb meine Anfrage.



  • benutz C++, und nicht C. und vor allem (!!!) misch es nicht (sscanf <--> cout)

    und zu C++ gehört wie schon genannt vector, string, array oder was ähnliches. nachzulesen in jeden halbwegs guten buch oder auf refenrenz seiten zu der STL



  • Skym0sh0 schrieb:

    benutz C++, und nicht C. und vor allem (!!!) misch es nicht (sscanf <--> cout)

    und zu C++ gehört wie schon genannt vector, string, array oder was ähnliches. nachzulesen in jeden halbwegs guten buch oder auf refenrenz seiten zu der STL

    Sag statt "vector, string, array oder was ähnliches" lieber Container (oder STL).
    Was hat sscanf bitte mit cout zu tun?
    Im letzten Punkt hast du natürlich(!) Recht.



  • struct int2 {
        unsigned int a[2];
    };
    
    int main() {
        char txt[] = "abc 13 abc 25";
        char format[] = "abc %d %*s %d";
        int a, b;
        a = 0;
        b = 0;
    
        struct int2 ar_int2;
        ar_int2.a[0] = (unsigned int) &a;
        ar_int2.a[1] = (unsigned int) &b;
    
        int ret = sscanf(txt, format, ar_int2);
    
        cout << "ret: " << ret << " | " << a << " | " << b << endl;
    
        return 0;
    }
    

    Iiiii!!!!!
    Schöner kommt gleich. :xmas1:


Anmelden zum Antworten