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 == behaltenWie 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