SyneX Geschrieben 18. Oktober 2008 Geschrieben 18. Oktober 2008 Hallo, ich versuche einen Integer zu vergleichen, aber es kommt die Warnung: "Warnung: Vergleich zwischen Zeiger und Ganzzahl" und es wird bei folgendem code "test3" ausgegeben, obwohl "test1" ausgegeben werden sollte. Code: mysql_real_query(my, STR, strlen(STR)); res = mysql_store_result (my); while ((row = mysql_fetch_row (res)) != NULL) { if (row[5] == 1) { printf ("test1"); } else if (row[5] == 2) { printf ("test2"); } else printf ("test3"); } In dieser Mysql Spalte steht die Zahl 1 und der typ der Spalte ist Int(1). Wenn ich über printf ((char *) row[5]); das ausgeben lasse, gibt er die 1 aus. Aber wenn ich die Abfragen entsprechend anpasse: mysql_real_query(my, STR, strlen(STR)); res = mysql_store_result (my); while ((row = mysql_fetch_row (res)) != NULL) { if ((char *) row[5] == "1") { printf ("test1"); } else if ((char *) row[5] == "2") { printf ("test2"); } else printf ("test3"); } kommt immer noch "test3" raus (aber ohne Warnung). Woran kann dies liegen? Zitieren
Klotzkopp Geschrieben 19. Oktober 2008 Geschrieben 19. Oktober 2008 Daran, dass man in C Strings nicht mit == vergleichen kann. Benutz die Funktion strcmp. Zitieren
SyneX Geschrieben 19. Oktober 2008 Autor Geschrieben 19. Oktober 2008 ups Ich danke dir. Das kommt davon, wenn man nur ein bisschen C kann und dann noch mit anderen Programmier-/Skriptsprachen zu tun hat. Zitieren
unbenannt Geschrieben 19. Oktober 2008 Geschrieben 19. Oktober 2008 Hallo, alternativ kannst Du natürlich auch mittels "atoi" in einen Integer konvertieren: mysql_real_query(my, STR, strlen(STR)); res = mysql_store_result (my); while ((row = mysql_fetch_row (res)) != NULL) { if (atoi(row[5]) == 1) { printf ("test1"); } else if (atoi(row[5]) == 2) { printf ("test2"); } else printf ("test3"); } Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.