(An dieser Stelle ein Danke an retroK der mir freundlicherweise bei meinem Letzten Problem schon sehr geholfen hat!)
also - die Aufgabenstellung ist folgende:
Ich habe leider keine ahnung wie man die unabhängigkeit von der Wortbreite hinkriegen könnte.Der Benutzer darf irgendeinen String eingeben. Bitte schreiben Sie ein C-Programm, welche
überprüft, ob dieser String eine Zahl ist, deren Wert den Anforderungen des Typs „unsigne
int“ genügt. Bitte überlegen Sie sich, was der Benutzer alles falsch machen kann, fangen Si
es (mit möglichst wenigen Fallunterscheidungen) ab und teilen Sie es dem Benutzer mög
lichst einfach mit (z.B. „mindestens ein Zeichen ist keine Ziffer!“). Lesen Sie über verwend
te Funktionen ggf. in einer C-Referenz nach, so dass Sie wissen, was passiert. Bitte testen Si
Ihr Programm mit sinnvollen und unsinnigen Eingaben.
Dieses Programm soll die Grundlage einer Funktion zur Eingabeprüfung bilden. Es soll als
wieder verwendet werden.
Hinweise:
Bitte überlegen Sie, wie lang der String höchstens sein darf, damit er die Bedeutung eines
sinnvollen „unsigned int“-Wertes haben kann (wenn der Benutzer einen längeren String ein-
gibt, so muss dieser als falsch gewertet werden.)
--->Ihr Programm soll unabhängig von der Wortbreite der CPU funktionieren! <---
hab n bisschen in meinem skript rumgeblättert und da beim thema variablen etc. die Funktion "sizeof" gefunden
allerdings weiß ich jetzt nicht ganz was ich mit der bytezahl die ich rauskriege (zb: b=4) anfangen kann - daraus müsste man ja irgendwie rauskriegen können was die größtmögliche unsigned int zahl ist oder?2. Die tatsächliche Anzahl von Bits variiert je nach Rechnersystem.
Vorsicht bei der Portierung von Programmen!
3. Mit der Funktion sizeof kann die tatsächliche Speicherplatzgröße eines Datentyps in
Byte ermittelt werden, z.B.:
int a,b;
a=sizeof(unsigned int)
b=sizeof(a);
mein programm soweit:
Code: Alles auswählen
int main()
{
int probe, laenge, i, zahl=0, zahl1=1, a, b;
char eingabe[100];
a=sizeof(unsigned int);
b=sizeof(a);
printf("\na: %d b: %d \n",a ,b);
do
{
probe=0;
printf("\nEingabe: ");
fgets(eingabe, 100, stdin);
laenge=strlen(eingabe);
if (laenge>11)
{
printf("\nEigabe zu lang\n");
probe++;
}
printf("\nlaenge: %d\n",laenge);
for (i=0; i<laenge-1; i++)
{
if (isdigit(eingabe[i]))
{
continue;
}
else
{
printf("\nNur Zahlen eingeben!\n");
probe++;
break;
}
}
} while (probe!=0);
puts(eingabe);
zahl = atoi(eingabe);
printf("\nzahl: %d\n", zahl);
return 0;
}Ausserdem wärs nicht schlecht wenn man für das Feld dynamisch speicher reservieren könnte (hab da auch noch keine ahnung wie das gehen soll)
wär cool, wenn mir jemand helfen könnte.









Renault Fahrer
