PQgetvalue nach integer und anschließender Vergleich



  • Ich bin zwar total der Anfänger, aber eigentlich solle es doch so funktionieren:

    int a;
    int b;	
    a = (int)PQgetvalue (res_check, 0, 0);
    b = (int)PQgetvalue (res, j, 2);
    if(a == b){
     // geht nicht hier rein
    }
    

    jemand einen Tipp?

    Mfg
    tommy



  • Was soll dieses "PQgetvalue" eigentlich bewirken? Womöglich trifft dein Vergleich ja tatsächlich nicht zu.

    (Tip: Debugger oder Kontrollausgabe "printf("a=%d\tb=%d\n",a,b);" helfen sicher weiter)



  • ah ok. Die "Zahlen sind unterschiedlich" bei %d stimmen sie nicht überein. Bei %s jedoch schon.

    char *PQgetvalue(const PGresult *res,
                     int row_number,
                     int column_number);
    

    ist von PostgreSQL.

    die gibt mir ja ein char zurück, mit nem einfachen (int) cast funktionierts aber leider nicht 😞

    thx tommy



  • Das gibt dir kein char zurück, sondern ein char* (Zeiger auf ein Array von Zeichen) - und offenbar wird bei jedem Aufruf ein neues Array angelegt und zurückgegeben.

    PS: Und Zeichenketten vergleicht in C man nicht per ==, sondern per strcmp().



  • thx.
    ok, zum einen könnte ich jetzt die Zeichenketten per strcmp() vergleichen, ich möchte aber mein == behalten 😉

    Wie wandel ich mein Char-Pointer zum Integer um?

    tommy



  • tommy2 schrieb:

    ok, zum einen könnte ich jetzt die Zeichenketten per strcmp() vergleichen, ich möchte aber mein == behalten 😉

    Eventuell solltest du auf C++ umsteigen und mit std::string arbeiten - die lassen sich per == vergleichen.

    Wie wandel ich mein Char-Pointer zum Integer um?

    Gar nicht - jedenfalls nicht so, wie du dir das vorstellst.



  • oki, danke.
    mfg
    tommy


Anmelden zum Antworten