Char to int

Hallo,

habe folgendes Problem schon mal gehabt (und auch gelöst), jedoch ist das schon so lange her das ich mich an die Lösung leider nicht mehr erinnern kann.

Ausgangssituation:

char text[]=„123“;
int x;

x=text[0]; // Hier ist mein Problem!

Ich möchte das x den int-Wert 1 bekommt. Wenn ich nur nach int caste
muß ich mich mit der ASCII Zahl rumschlagen. Ich möchte auch nicht den int-Wert des ganzen Strings (ich weiß, atoi(&text)).

Danke schon mal im Voraus

Gruß

Emanuel

Servus,

so wie ich dich verstehe, möchtest du das erste Zeichen als Integer interpretieren.

Das kannst du machen, indem du die ASCII-Werte betrachtest.

char text[]="123";
int x;

x = text[0] - '0'; 

Danke, genau das war mein Problem.

Hab die ganze Zeit versucht „0“ abzuziehen statt ‚0‘.

Gruß

Emanuel

Hi
Ist aber nicht die feine art das Problem so zu lösen.
Weil du letztlich das charakter(in deinem Fall den 0. ) aus dem char-Feld nimmst aber diesen nicht in eine integer Zahl konvertierst. Es funktioniert vielleicht aber es könnt auch mal nicht mehr funktionieren (anderes System, speicher, usw.)

char text[3]=„123“;
int x=(int) text[0]-‚0‘;

ausserdem verstehe ich nicht ganz warum du es nicht mit umwandeln wolltest, wegen ASCII ZEichen? diese behandelst du ja nach deinem Weg auch, indem du ‚0‘ abziehst. in der ASCII Tabelle hat dez 1 einen wert von 48 und dez. 0 einen von 47, wenn du jetzt 48-47 rechnest, kommt genau 1 raus, und das wäre dein gewünschtes Ergebnis. also behindert dich die typenumwandlung nicht, und machts auch nicht komplizierter, ist nur ein sicher Weg das nichts schiefgehen kann.

nicht das du jetzt meinst das ich kleinlich oder so bin, aber ich bin selbst schon stundenlang gesessen und hab solche Fehler gesucht, weil das funktioniert dann auch einmal nicht mehr, und nichtmal das muss sein. (ist ähnlich wie bei strcat ohne reservierten Speicher, das kann auch ganz schön ins auge gehen).

mfg martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]