So weit so gut, aber jetzt möchte ich das auch noch mit einer Intger-Variable machen, die auch negativ sein können müsste. Immer eine positive zu erhalten habe ich schon so realisiert:
Code:
int chartoint (char s[]) {
size_t str_leng = (strlen (s))-2;
int c;
for (c = 0; c <= str_leng; c++) {
if (isdigit (s[c]) == 0) {
printf ("Ungültige Eingabe. Es sind nur die Ziffern 0-9 erlaubt!\n");
exit (1);
}
}
int i = atoi (s);
return i;
}
Nur mit der "Negativ"-Variante habe ich noch so meine Probleme.
Code:
int chartoint (char s[]) {
size_t str_leng = (strlen (s))-2;
_Bool negative = 0;
int c;
if (s[0] == '-') {
negative = 1;
s[0] = 0;
for (c = 1; c <= str_leng; c++) {
if (isdigit (s[c]) == 0) {
printf ("Ungültige Eingabe. Es sind nur die Ziffern 0-9, - und + erlaubt!\n");
exit (1);
}
}
}
if (s[0] == '+') {
s[0] = 0;
for (c = 1; c <= str_leng; c++) {
if (isdigit (s[c]) == 0) {
printf ("Ungültige Eingabe. Es sind nur die Ziffern 0-9, - und + erlaubt!\n");
exit (1);
}
}
}
else {
for (c = 0; c <= str_leng; c++) {
if (isdigit (s[c]) == 0) {
printf ("Ungültige Eingabe. Es sind nur die Ziffern 0-9, - und + erlaubt!\n");
exit (1);
}
}
}
int i = atoi (s);
if (negative == 1)
return -i;
else
return i;
}
Die Bedingung erkennt das - einfach nicht. Wenn ich ein
Code:
printf ("%c\n", s[0]);
davor einbaue ist das - aber in s[0] vorhanden.
Was mache ich falsch???
Lesezeichen