Der Martin: C werte einlesen

Beitrag lesen

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.

  • scanf("%c%d", c, i);

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.