Überprüfen, ob Zahl oder anderes Zeichen eingegeben wurde...Wie?

cler

Mitglied
Hallo zusammen,

in einem C-Programm soll durch den User eine Zahl eingegeben werden (0-10000). Ich möchte nun gerne überprüfen, ob der User eine Zahl eingegeben hat oder ein anderes Zeichen. Wenn es ein anderes Zeichen ist, will ich ihn dann darauf hinweisen. Leider weiß ich nicht, wie ich nachschauen kann, ob der User eine Zahl oder was anderes eingegeben hat. Gibt es da eine Funktion oder so was für oder wie könnte man das lösen?

Bin für jeden Tip dankbar..

Grüße

Cler (Sven)
 
moin



So würde ich es machen:

Code:
	char zahl[10];

	cin>> zahl;

	for( int i=0; i<5; i++)
             if ( ! ((int)zahl[i] > 47 && zahl[i] < 85))
	     	{
		     cout<<"Falsche Eingabe";
		     break;
		}

Es gibt zwar auch eine Funktion die ein einzelnes Zeichen überprüft, aber das kann man auch von hand machen.

Danach kannst du mit "atoi()" deinen String in eine int Variable wandeln.


mfg
umbrasaxum
 
Zuletzt bearbeitet:
Code:
if (i >= 0 && i <= 10000) {
//zwischen 0 und 10000//
}
else {
printf("du stinkst!\n");
exit(1);
}

So würde ich das machen :P
 
moin


@MCIglo
Dein Programm sagt mir das "e" gültig ist! Ich glaub nciht das, das für cler ausreichend ist! Überleg dir noch mal ob du das so machen würdest. :P


mfg
umbrasaxum
 
wenn du i als integer definierst?
Code:
#include <stdio.h>
int main() {
 int i=0;
 scanf("%i",&i);
 if (i >= 0 && i <= 10000) {
   //zwischen 0 und 10000//
 }
 else {
   printf("du stinkst!\n");
   exit(1);
 }
}
Ich kanns hier nicht testen, weil mein PC einfach so im A..imer is, dass nittmal VC++ richtig läuft. SOllte aber eigentlich gehn
 
moin


Ja auch wenn ich i als Integer definiere.

Hab grad nochmal deinen neuen Code geteset und komme zu dem gleichen Fehler.


mfg
umbrasaxum
 
moin


Ich nehme an das das Programm bei deiner Variante den ASCI Wert vom "e" nimmt.
Der ist 101 und somit gültig.

Wenn man mitn Debugger das Programm überprüft weiss man genau woran es liegt, hab ich jetzt aber keine Lust zu....


mfg
umbrasaxum
 
Hallo zusammen,

wenn ich das richtig sehe, liegt das Problem darin, dass wenn man eine Zahl einliest und überprüfen will, ob eine Zahl oder ein Buchstabe eingegeben wurde, dass eine Zahl für bestimmte Buchstaben intern steht. 106 z.B. glaube ich für n oder j. Richtig? Wenn jemand also zufällig 106 eingibt, was ja eigentlich vollkommen OK wäre, würde es der Rechner als Buchstaben nehmen!?
Gibt es da keine fertige Funktion für die das erledigt und true oder false wiedergibt....oder so etwas?

Grüße

cler
 
moin


Zu deiner ersten Frage:
Ja 106 steht für das j. 110 für n.

Zu deiner zweiten:
Wenn ich in eine char Variable eine 1 eine 0 und eine 6 eingebe ist es kein e!
Wenn ich in eine int Variable hab mit dem Wert 106 und sie dann als char caste isses ein e!

Zu deiner dritten Frage:
Mir ist keine fertige Funktion bekannt die vom "Grundlegen Bibliotheken" mit geliefert wird und wenn dann machen sie eh nur das was meine Funktion macht. Kann dir aber gerne eine entsprechende Funktion schreiben.


mfg
umbrasaxum
 
Zurück