Der Andere schrieb:
> Bastian N. schrieb:
>> welchen Wert es in Ascii hat.
>
> dafür gibt es in c "isdigit()"
> Wenn die Zahl nicht 0 sein kann kannst du einfach auf 0 testen. Bei
> nichtnumerischen Strings liefert atoi() 0 zurück
Leider gibt es isdigigt beim Wickenhäuser wohl nicht - mal wieder:
1 | // testmain.c 14: Warning: missing prototype for function 'isdigit()'
|
2 |
|
3 |
|
4 |
|
5 | /******************************************************
|
6 | * CTYPE.H
|
7 | * (C) 2002 Juergen Wickenhaeuser
|
8 | *******************************************************/
|
9 |
|
10 | char tolower(char c);
|
11 | char toupper(char c);
|
12 |
|
13 | // EOF
|
Danke dir trotzdem. Muss nächstes mal wieder dazuschreiben das ich
Wickenhäuser IDE benutze.
Hab jetzt das selbst implementiert:
1 | //...
|
2 | char input = '4';
|
3 | if((input < 48) || (input > 57))
|
4 | //...
|
Wgn atoi: Das liefert beim Wickenhäuser nicht immer (bei Falscheingabe)
eine zurück - z.B bei 4f - habe ich getestet:
1 | /**************************************
|
2 | * ATOI.C: ASCII to Integer
|
3 | *
|
4 | * (C) 2002 Juergen Wickenhaeuser
|
5 | *
|
6 | **************************************/
|
7 |
|
8 | #include <stdio.h>
|
9 |
|
10 | /* ASCII to Integer */
|
11 | int atoi(far char* pc){
|
12 | uint val=0;
|
13 | uchar c;
|
14 | uchar flags=0; // 128: Neg, >1: Pos
|
15 | for(;;){
|
16 | c=*pc++;
|
17 | if(!flags){ // Phase 0: WS
|
18 | if(c==' ' || c=='\t') continue;
|
19 | else flags=1;
|
20 | }
|
21 |
|
22 | if(flags==1){
|
23 | if(c=='-') {
|
24 | flags=128;
|
25 | continue;
|
26 | }
|
27 | flags=2;
|
28 | if(c=='+'){
|
29 | continue;
|
30 | }
|
31 | }
|
32 | if(c<'0' || c>'9') break;
|
33 | val*=10;
|
34 | val+=(c-'0');
|
35 | }
|
36 | return (flags==128)?(-(int)val): val;
|
37 | }
|
38 |
|
39 | // EOF
|
MfG
Bastian
Und @Moderator bin zufällig auf den Meldeknopf gekommen, weil nicht
richtig gelesen - sorry.