Hallo,
ich weiss, es ist noobhaft
nein, nicht wenn man sich wenigstens Mühe gibt und die Frage sinnvoll stellt. :-)
das Problem - ich muss ein char und zahl ODER zahl einlesen.
char wird dann zum multiplicator (d für 2 oder t für 3).
Also hast du Eingaben wie etwa
"t2" für triple-two
"d8" für double-eight
"d12" für double-twelve
Verstehe ich das soweit richtig? Gibt es noch weitere Präfixe?
Dann würde ich die gesamte Eingabe zunächst als String behandeln und dann selbst im Programm aufdröseln.
Die Familie der scanf-Funktionen ist manchmal sehr zickig und anfällig gegen Fehler und Buffer Overflows; ich würde sie nicht empfehlen. Mit fgets() fährt man da meist besser.
Also zum Beispiel:
char input[MAXLEN]; // Puffer für Eingabestring
int multiplier = 0; // aus 'd' oder 't' abgeleitet
int number = 0; // Zahl nach 'd' oder 't'
int index = 0; // Index in Eingabestring
if (fgets(input, MAXLEN, stdin)) // liest maximal (MAXLEN-1) Zeichen
// plus abschließendes Nullbyte von stdin
{ switch (input[0]) // erstes Zeichen
{ case 'd':
multiplier = 2; // 'd' ergibt Multiplikator 2
index++; // Zeichen überspringen
break;
case 't':
multiplier = 3; // 't' ergibt Multiplikator 3
index++; // Zeichen überspringen
break;
default:
multiplier = 1; // alles andere ergibt 1 (Annahme)
break;
}
number = atoi(input+index); // restliche Eingabe als Zahl
number *= multiplier; // Multiplikator verrechnen
}
else // fgets() lieferte NULL
{ // FEHLER bei fgets() oder Eingabestring leer
}
So würde ich die Aufgabe jedenfalls angehen ...
So long,
Martin
--
F: Was ist schneller: Das Licht oder der Schall?
A: Offensichtlich der Schall. Wenn man den Fernseher einschaltet, kommt immer erst der Ton, und dann erst das Bild.