unsigned char mit scanf befüllen? Formatstring?
-
Er kann es aber einfach als Zahl einlesen mit %d oder %i.
-
der Datentyp ist vom prof vorgegeben.
-
Genmutant schrieb:
Er kann es aber einfach als Zahl einlesen mit %d oder %i.
Das sagte ich doch, er muss es zuerst in einen Integer oder Short einlesen, und dann in das Char kopieren.
-
Ah ne sry war ne blöde Idee die ich da grade hatte ^^
Das mit dem casten funktioniert glaub ich doch so nich wie ich mir das grade vorgestellt hab. Is aber auch noch viel zu früh am Morgen
-
Die Idee mit dem eher umständlichen casten über die int-Zwischenvariablen klappt. Danke.
Also gehe ich recht in der Annahme, dass es solch einen Formatstring, der eine eingegebene Zahl in einem unsigned char ablegt, nicht gibt?
-
Nein, gibt es nicht. Denn du missbrauchst einen Datentyp.
-
Naja, lernen wir hier in der Uni so, von wegen Speicher sparen und festgelegter Teil der Aufgabe...
-
Speicher sparen? Oh ja, ihr spart 2 byte, dadurch dass ihr 2 mal char statt 2 mal short nehmt! Und das bei heutigen Systemen mit GIGABYTE Speicher.
Davon mal abgesehen, dass diese char's höchstwahrscheinlich vom Compiler sowieso gepadded werden und ihr somit keinen Speicher spart.
-
Wie wärs dann wenn du uint8_t benutzt? Unsigned Integer, mit 8 Bit Größe, bzw. so groß wie ein char. (Also mind. 8 Bit)
Dann funktioniert dein %hhu auch.
Du brauchst den Header stdint.h, der bei C99 Standard ist.EDIT: Janjan, es gibt durchaus viele Anwendungsgebiete wo es auf jedes Byte ankommt. Mal Mikrocontroller mit 64Byte Arbeitsspeicher benutzt?
-
Des ist ein Prog für den Windows-PC. Also nix mit miniwenig Speicher...
Und ich darf die Datentypen eben nicht ändern, weil sie vorgegeben sind. Sonst würde ich da auch einfach nen kleines Int draus machen, wenns meins wäre.
Und selbst wenn sparen, die 2 gesparten Bytes verballer ich ja wieder für die für das casten nötigen zusätzlichen Befehle und die zusätzlichen Int-Variablen.
Ob das alles in 2 byte passt????
edit:
Die Char-Variablen gehören zu den Datensätzen einer kleinen Mini-Datenbank für Flugdaten mit max. 16 Datensätzen. Da ist auch je ein String mit fester Länge drin, der den Zielort aufnimmt. Dynamische Strings hätten wohl mehr Spareffekt.
-
Um welchem Compiler handelt es sich denn? Die hh-flags sind eine "Neuheit" aus C99, wenn das der Compiler nicht kann... Gibt es Warnungen die du uns vorenthältst?