PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C: chars in ints umwandeln?


mf_2
2004-02-13, 22:16:03
Hallo,

Ich ahbe einen String test[10] in c. Die ersten drei zeichen des strings sind immer dez. zahlen. diese ersten drei zeichen möchte ich nun in das int-array zahl[3] kopieren. Wie geht das?

Ich habe schon folgendes versucht, da bekomm ich aber nur schwachsinn in den int-array reingeschrieben:

for (i=0;i<=2;i++)

{

zahl[i] = test[i];

}

Exxtreme
2004-02-13, 22:56:56
Ich weiss gar nicht, was du überhaupt machen willst...

Meinst du vielleicht, daß wenn du den String "123" in das int-Aray kopierst, daß du dann dann tatsächlich

zahl[1]=1
zahl[2]=2
zahl[3]=3

rausbekommst?

Wenn ja, dann sage ich dir, daß das so nicht funktioniert.

mf_2
2004-02-13, 23:01:32
Ja, das ist genau das, was ich machen will :D

Xmas
2004-02-13, 23:03:55
Wenn du das machen willst was Exxtreme beschrieben hat, musst den ASCII-Code für das Zeichen '0' vom ASCII-Code für die anderen Zahlzeichen abziehen. Also:
for(i = 0; i <= 2; ++i) {
zahl[i] = test[i] - '0';
}

char ist ein *numerischer* Typ, d.h. er speichert Zahlen. Wenn man diese Zahlen anhand des ASCII-Codes interpretiert, bekommt man Zeichen. Die Zahl für das Zeichen '0' ist 48, für die anderen Ziffern entsprechend höher.

Exxtreme
2004-02-13, 23:09:18
Der Grund ist ganz einfach:

das Zeichen '1' ist nicht binär 1 sondern 49. :) Wenn du also den String "123" reinkopierst, wirst du:

zahl[0]=49
zahl[1]=50
zahl[2]=51

rausbekommen. :D

mf_2
2004-02-13, 23:21:55
Thx @all, ihr habt mir sehr weitergeholfen!

Exxtreme
2004-02-13, 23:25:41
Hier ist die ASCII-Tabelle:
http://n.ethz.ch/student/stammt/doc/Allgemeines/Ascii.html

Da sieht man welche Zeichen welchen Binärwert haben.

Legolas
2004-02-14, 10:56:38
Wenn du die Zeichenkette in einen int umwandeln willst, der den Wert 123 hat, dann geht das mit atoi. Benutzung wird in diesem Link erklärt:

http://www.chakotay.de/c-kurs/html/ansi_1.htm
(etwas runterscrollen)