A
@CStoll
Erst einmal danke für deinen Hinweis.
Habe das ganze jetzt umprogrammiert.
Schon interessant, was man aus so einer "Neulingsfrage" machen kann.
Zähle mich aber selbst noch dazu.
Jedenfalls funktioniert jetzt bei Eingabe > 9, z.B. 12, die Ausgabe korrekt.
Siehe isdigit(c).
Allerdings ist die Ausgabe bei 'AAA' immer noch 'A'.
Somit wird es als richtig ausgegeben.
Aber das bekomme ich noch hin.
Ist jetzt nur schon määächtig spät.
#include <stdio.h>
int main()
{
int i;
char c;
char buffer[32];
printf("Eingabeueberpruefung: A B C D E F G H I J\n");
printf(" 0 1 2 3 4 5 6 7 8 9\n");
printf("Programm mit einem '.' beenden.\n");
do
{
fgets(buffer, 32, stdin); //liest bis Zeilentrenner ein, oder hier maximal 32
sscanf(buffer, "%c", &c); //formatiert Inhalt von buffer nach c
if(isdigit(c) == 0) //mit Hilfe von isdigit ermitteln, ob Buchstabe oder Zahl
{
printf("Eingabe war ein Buchstabe\n");
if(!(c >= 'A' && c <= 'J')) // dann gehe zur nächsten if-Abfrage
{
if(c == '.') //der Punkt beendet das Programm
{
printf("Programm wird beendet\n");
break;
}
else //ansonsten falsche Eingaben
{
printf("Falsche Eingabe: %c\n", c);
}
}
else //ansonsten richtige Eingabe
{
printf("Richtige Eingabe: %c\n", c);
}
}
else
{
printf("Eingabe war eine Zahl\n");
sscanf(buffer, "%d", &i); //formatiert Inhalt von buffer nach i
if(!(i >= 0 && i <= 9)) //jetzt wird auch bei Zahlen >9 die falsche Eingabe erkannt
{
if(c == '.') //der Punkt beendet das Programm
{
printf("Programm wird beendet\n");
break;
}
else //ansonsten falsche Eingaben
{
printf("Falsche Eingabe: %d\n", i);
}
}
else //ansonsten richtige Eingabe
{
printf("Richtige Eingabe: %d\n", i);
}
}
}
while(c != '.'); // erklärt sich selbst
return 0;
}
azoikum