iaalpha, isdigit, etc. exception aber warum
-
wert = argv[optind-1]; if ( (isalpha(wert))) printf("%s ist keine gueltige Artikelnummmer", wert); else entry.num = atoi(argv[optind-1]);
Sobal ich beim Programmafruf auf isalpha teste gibts einen bösen programmabsturz. Warum??? Ich hab keine Ahnung und hoffe, dass ihr mir weiterhelfen könnt.
Danke und N8
-
isalpha checkt einen char und nicht einen string (char-array) ob es ein buchstabe ist... an sonsten zeig mal die typen deiner variablen und du musst sicher stellen das optind-1 >0 und kleiner argc ist...
zum anderen ist es vermutlich schlauer isdigit zu verwenden... nur weil irgendwas kein buchstabe ist heisst das noch lange nicht das es eine zahl/ziffer ist...
-
int is_valid(const char *text, int (*func)(int c)) { for(; *text; text++) if(!func(*text)) return 0; return 1; }
if(is_valid(wert, isalpha)) ...
-
isalpha() verlangt ein einzelnes zeichen als argument und keinen string.
der absturz könnte daher rühren, daß manche stdlibs (insbesondere gnu) den test aus geschwindigkeitsgründen mit einem array machen. etwa (char_type[c]&_ISALPHA). wenn du anstelle eines chars eine addresse übergibst, dann gibt das natürlich eine gewaltige bereichsüberschreitung. womöglich bis in geschützten systemspeicher hinein.
-
Heloo leute
wie funktioniert isDigit methode
-
zu so einem prototypen kann man wohl nicht mehr viel sagen:
int isdigit(int c);
und rate mal welcher int-wert zurück geliefert wird, wenn es ein digit ist...