C Keine Buchstaben

DragoNru

Lieutenant
Registriert
Nov. 2008
Beiträge
540
Hallo,

hab die Aufgabe bekommen das Hasse- Collartz-Problem mit eclipse zu programmieren. Was auch soweit kein Problem darstellt, nur bei der Eingabe komme ich nicht weiter. Es dürfen nur natürliche Zahlen genommen werden, keine Buchstaben etc. Leider bin ich ein programmieranfänger und weiß nicht genau, wie man sowas realisieren soll.

Hiermit hab ich es schonmal geschafft, dass Buchstaben, Sonderzeichen etc. als 0 ausgespuckt werden und Zahlen werden übernommen, damit kann man zwar arbeiten ,aber kennt ihr vielleicht eine "bessere" Lösung?

char x[80];
int y;
printf("Schreib was:");
gets(x);
y=atoi(x);
printf("\n\tDas ist es %i",y);

Gruß
 
Ich hab mal vor einiger Zeit eine ähnliche Funktion geschrieben, die neben Zahlen auch noch bestimmte Sonderzeichen zulässt. In deinem Fall musst du halt die entsprechende Zeile abändern. Um Zahlen zuzulassen, die größer als eine einzelne Ziffer sind, einfach die zurückgegebenen (und somit gültigen) Zeichen aneinanderreihen (zB. in einem String).

Code:
int Zahlenfilter(char *p)
{
	//Ausschließlich Ausgabe von Zahlen und den Zeichen Plus
	//und Minus. Buchstaben, Leerzeichen etc. werden gefiltert.
	//Returnwert ist die Anzahl von eingetippten Zahlen, Plus und 
	//Minus-Zeichen. Eingangsparamteter ist ein Zeiger auf eine 
	//Variable, die die eingetippten gültigen Werte speichert.

	char c=0;	//Eingegebenes Zeichen
	int i=0;	//Anzahl erlaubter Zeichen

	while((c=getch()) != CR) //Solange bis Enter
	{
		if((c>='0')&&(c<='9') || (c == '+') || (c == '-') || (c == ' '))
		{
			if(c !=' ') //Zeichen ausgeben, falls Zahl oder + oder -
			{
				putch(c);
				*p=c;
				p++;
				i++;
			} //Leerzeichen ignorieren
		}
		else	//Sound ausgeben
			putch(BELL);
	}
	*p=0; //Pointer zurück auf Anfang
	return i;
 
Zuletzt bearbeitet:
Hallo,

vielleicht kannst du das ja irgendwie verwenden?
Hiermit können nur Zahlen eingelesen werden:

Code:
int temp;

printf("Bitte Zahl eingeben: ");

while (scanf_s("%d", &temp) != 1)
{
     while (getchar() != '\n');
          printf("Ung\x81ltige Zahl! Bitte nochmal versuchen: ");
}

return(0);

Natürlich musst du das noch an deine Bedürnisse anpassen.
Ist aber ein Grundgerüst... ;)
 
Zurück
Oben