Char to Int
-
Hallo,
wie kann ich ein char zu einem int konvertieren?Kann mir jemand ein beispiel geben?
Hab schon gegoogled, aber atoi() braucht const char* und nicht char
-
Ein char, also ein einzelnes Zeichen? Das braucht du normalerweise nicht wirklich konvertieren. Zieh einfach 48 ab, dann machst du aus '0' eine 0, aus '1' eine 1 usw.
char c='5'; int i=c-48; //i==5 !!
-
Was bedeutet das hier genau:
int i=c-48;
Also was genau passiert da nu ?
-
c wird implizit nach int gecastet und hat den Wert 53 ('5' entspricht Wert 53, Stichwort ASCII-Code!). 53-48 macht 5! Du kannst mit einem char problemlos rechnen, macht C/C++ keinen großen Unterschied zwischen char und int.
-
Hallo,
wenn schon:
_matze schrieb:
char c='5'; int i=c-48; //i==5 !!
denn schon:
char c = '5'; int i = c - '0';
MfG,
Probe-Nutzer
-
Die '0' macht es natürlich etwas lesbarer, da geb ich dir Recht. Aber bitte nimm diese komischen, unsichtbaren Zeichen raus, die du überall verstreut hast!
-
_matze schrieb:
Die '0' macht es natürlich etwas lesbarer, da geb ich dir Recht.
Ich habe eben immer noch "Angst" vor Maschinen, bei denen '0' nicht auf 48 abgebildet wird
(dass die Zahlen hintereinander folgen, da habe ich keine Bedenken)
_matze schrieb:
Aber bitte nimm diese komischen, unsichtbaren Zeichen raus, die du überall verstreut hast!
Welche Zeichen, kläre mich mal auf! Oder jetzt besser?
MfG,
Probe-Nutzer
-
Probe-Nutzer schrieb:
Welche Zeichen, kläre mich mal auf! Oder jetzt besser?
Ähm, ich meinte die Leerzeichen.
-
Hier der etwas aufwendige Code für ein InputboxBuffer[3] (von ner Inputbox das output)
if (InputboxBuffer[1] == NULL) { einser = InputboxBuffer[0] - 48; return einser; } else if (InputboxBuffer[2] == NULL) { zehner = InputboxBuffer[0] - 48; einser = InputboxBuffer[1] - 48; ergebnis = (zehner * 10) + einser; return ergebnis; } else if (InputboxBuffer[3] == NULL) { hunderter = InputboxBuffer[0] - 48; zehner = InputboxBuffer[1] - 48; einser = InputboxBuffer[2] - 48; ergebnis = (hunderter * 100) + (zehner * 10) + einser; return ergebnis; } else { tausender = InputboxBuffer[0] - 48; hunderter = InputboxBuffer[1] - 48; zehner = InputboxBuffer[2] - 48; einser = InputboxBuffer[3] - 48; ergebnis = (tausender * 1000) + (hunderter * 100) + (zehner * 10) + einser; return ergebnis; }
Sicher gehts noch einfacher, aber es war lustig, wieder mal Mathematisch denken zu müssen ^^
-
Schön, wenn es dir Spaß gemacht hat.
Du weißt aber, dass du dich damit auf eine Zahl <10000 festlegst, ne? Außerdem könntest du 3/4 der Zeilen sparen.
-
Wenn man es nicht selbst schreiben will:
char s[]="12345"; int i=atoi(s);
P.S.: in_line, du hast ja nach char to int gefragt, nicht char* to int. Ist dir der Unterschied klar (char==Zeichen, char*==Zeichenkette)?