Ich versuche festzustellen, ob jedes Zeichen in meiner Zeichenfolge alphanumerisch ist. Mein Compiler hat nicht die Isalnum-Funktion.isalnum äquivalent mit #define
Meine Funktion ist unten und my_struct hat ein Char-Array der Größe 6 (uint8 bom_pn [6]) .... und ja uint8 ist ein char.
boolean myfunc(my_struct * lh)
{
ret = (isalphanum(lh->bom_pn) && isalphanum(lh->bom_pn + 1) &&
isalphanum(lh->bom_pn + 2) && isalphanum(lh->bom_pn + 3) &&
isalphanum(lh->bom_pn + 4) && isalphanum(lh->bom_pn + 5));
}
Meine Makrodefinition ist unten:
#define isalphanum(c) ((c >= '0' && c <= '9') || \
(c >= 'A' && c <= 'Z') || \
(c >= 'a' && c <= 'z'))
Die oben den Fehler wirft "Operandentypen nicht kompatibel sind (" uint8 * "und" int ")"
Wenn ich meine Definition ändern zu dem folgenden kompiliert mein Code und ich bekomme Warnungen.
#define isalphanum(c) (((uint8)c >= '0' && (uint8)c <= '9') || \
((uint8)c >= 'A' && (uint8)c <= 'Z') || \
((uint8)c >= 'a' && (uint8)c <= 'z'))
Warnung: „Umwandlung von Zeigern auf kleinere integer“
Meine Frage ist, wie kann ich diese Definition richtig ohne Warnungen erstellen (und offensichtlich richtig überprüfen).
Dank
Hinweis, dass über Ihren Zeiger vs. spitz - Um Probleme zu vermeiden, behandeln Sie keine Gebietsschemas. Warum hat Ihre Umgebung nicht "ctype.h"? – geekosaur
bah, ich wollte nur sagen, zurück (isal .....) – NickG