Char to Int Array
-
Hi, also ich habe folgendes Problem:
ich habe eine char variable "buf", welche 6 zahlen speichert. diese 6 zahlen moechte ich nun gerne jeweils einzeln in ein array packen, damit ich mit ihnen arbeiten kann.
char buf[256];
cout<<buf[0];
cout<<buf[1];
cout<<buf[2];
cout<<buf[3];
cout<<buf[4];
cout<<buf[5];Diese möchte ich also nun quasi folgendermassen in ein int umegwandelt haben damit ich sie in ein Array packen kann zb.:
int intzahl[5];
intzahl[0]=buf[0];
intzahl[1]=buf[1];
intzahl[2]=buf[2];
intzahl[3]=buf[3];
intzahl[4]=buf[4];
intzahl[5]=buf[5];so das die moeglichkeit besteht, dass ich z b ohne probleme mit ihnen rechnen kann.
summe= intzahl[0]+intzahl[1];
würde schon reichen

-
craven schrieb:
int intzahl[5];
...
intzahl[5]=buf[5];Ich weiß zwar nicht wo das Problem liegt, aber das geht nicht. Du forderst Speicher für 5 Elemente an, belegst aber 6.
-
for (int i=0;i<6;i++ ) intzahl[i]= buff[i-'0'];
-
Das Problem ist, dass es so wie es da steht:
intzahl[5]=buf[5];
nicht funktioniert. du musst den char umwandeln in integer.
sicher, man kann in der regel chars in int mittels:
intzahl[5]=atoi(buf[5]);
umwandeln. dies funktioniert hier aber nicht. man koennte hoechstens
intzahl[5]=atoi(buf);
schreiben, was mich aber nicht zu meinem ergebnis führt.
-
denali schrieb:
for (int i=0;i<6;i++ ) intzahl[i]= buff[i-'0'];hat ich auch schon ausprobiert, funktioniert aber auch nicht

kommen sehr kuriose zahlen raus.
-
Sorry, ich war natürlich wieder mal viel zu schnell!
Es muss natürlich heißen:for (int i=0;i<6;i++ ) intzahl[i]= buff[i]-'0';Ein char ist nichts anderes als ein int mit 1 Byte Länge. Er wird nur anders interpretiert.
-
denali schrieb:
Sorry, ich war natürlich wieder mal viel zu schnell!
Es muss natürlich heißen:for (int i=0;i<6;i++ ) intzahl[i]= buff[i]-'0';Ein char ist nichts anderes als ein int mit 1 Byte Länge. Er wird nur anders interpretiert.
Ja das wars
Das hatte ich natürlich nicht bedacht. Vielen Dank für diese schnelle Hilfe!
-
und noch ein tipp ein array mit dem index 5 geht von 0 bis 4