[C89] Integer (0..9) to char
-
Hallo,
nach einer langen Zeit darf ich mich wieder mit der wunderbaren Sprache C auseinandersetzen. Jedoch habe ich derzeit ein kleines Problem.
Ich habe eine struct die aus 20 char's besteht.
struct int20 int20Result = {'\0','\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0'};
Auf diese struct zeigt ein pointer auf das letzte char.
pR = &int20Result.c19;
iBuff += (((*pA) - '0') + ((*pB) - '0')); printf("iBuff: %d\n\n",iBuff); if (iBuff >= 10) { iBuff = iBuff - 10; (*pR) = (char)iBuff; iBuff = 1; } else { (*pR) = (char)iBuff; iBuff = 0; } printf("pA: %c\n\n",(*pA)); printf("pB: %c\n\n",(*pB)); printf("pR: %c\n\n",(*pR)); pA--; pB--; pR--;
nun ja, ich iBuff steht nun meine Zahl drin, diese ist entweder 0 oder 9 also sollte das ganze Ohne Probelme in ein chat passen.
Leider klappt es, so nicht.
*pR) = (char)iBuff;
Ich habe es auch mir sprintf versucht. Leider ohne Erfolg. Wenn mir jemand tipps geben kann würde ich mich sehr freuen.
Und wenn wir schon mal dabei sind, gibt es etwas sauberes als dieser hässlich Hack:
iBuff += (((*pA) - '0') + ((*pB) - '0'));
Danke im Voraus.
-
zyon schrieb:
edit.. mom
Forum mit Chat verwechselt?
-
Naja, halt die üblichen '0' dazuzählen.
-
_matze schrieb:
zyon schrieb:
edit.. mom
Forum mit Chat verwechselt?
Auf "Absenden" geklickt und nicht auf "Vorschau"
-
mngbd schrieb:
Naja, halt die üblichen '0' dazuzählen.
Das war auch schon die Lösung, ist das aber nicht etwas unsauber gelöst!?
-
zyon schrieb:
mngbd schrieb:
Naja, halt die üblichen '0' dazuzählen.
Das war auch schon die Lösung, ist das aber nicht etwas unsauber gelöst!?
Nö, so macht das schon K&R. Ein weniger unsauberer wäre es natürlich, die 48, die das normalerweise sind, hart hineinzuschreiben.
Nachtrag:
Aber natürlich setzt das voraus, daß im Zeichensatz die Ziffern schön geordnet sind. So gesehen hast du natürlich recht. Unter sehr exotischen (lies: absurden) Verhältnissen kann das also durchaus schiefgehen.
-
Ok, Besten Danke mngbd.
Wenn das K&R schon so gemacht haben bez. machen. Dann reicht mir das als Sicherheit
Nochmals Danke
-
Immer gerne.
Übrigens gilt wahrscheinlich auch für die Halbgötter, daß man nicht jedes Wort auf die Goldwaage legen sollte. Damals war EBCDIC noch nicht tot, und die könnten damit durchaus eine subtile Polemik beabsichtigt haben. Aus heutiger Sicht hat sich ihre Meinung aber durchgesetzt.
-
mngbd schrieb:
Damals war EBCDIC noch nicht tot
Heute auch noch nicht.
-
mngbd schrieb:
Nö, so macht das schon K&R.
Der Standard garantiert auch, dass das klappt. Die Ziffernzeichen liegen hintereinander lückenlos geordnet von '0' bis '9'.
Unter exotischen Verhältnissen mögen die Buchstaben durcheinandergewirbelt sein, aber nicht die Ziffern.
-
Bashar schrieb:
Unter exotischen Verhältnissen mögen die Buchstaben durcheinandergewirbelt sein, aber nicht die Ziffern.
Das ist natürlich völlig korrekt. Insofern hatte mein Einwand hier keine Relevanz.
-
Bashar schrieb:
Unter exotischen Verhältnissen mögen die Buchstaben durcheinandergewirbelt sein, aber nicht die Ziffern.
Das ist gut zu wissen.