char array[i] to int ?
-
Hallo, ich bin auf der suche wie man ein char-Array, Zeichen für Zeichen auslesen und in ein char umwandeln kann. Das Umwandeln ist hier das Problem, atoi und char* führen nicht zum Ziel.
char array[]= "73167176531330624919225119674426574742355349194934"; // 50 Zeichen int i,a; int product=1; int temp2; for(i=0;i<5;i++) { //ersten 5 Zeichen temp2=(int*)array[i]; product=product*temp2; printf("\n\tProduct: %i",product); //gewolltes Produkt 1*7,7*3,21*1, //aber: 55, 2805, 137445 ... }
-
1. '7' ist etwas anderes als 7
2. int* ist etwas anderes als intchar array[]= "73167176531330624919225119674426574742355349194934"; // 50 Zeichen int i,a; int product=1; int temp2; for(i=0;i<5;i++) { temp2=array[i]-'0'; // aus '7' wird 7 gemacht product=product*temp2; printf("\n\tProduct: %d\n",product); //gewolltes Produkt 1*7,7*3,21*1, }
-
Danke jetzt funktionierts, ich versteh aber nicht was mit
temp2=array[i]-'0';
gemeint ist.
-
Vergessen: Stichwort ASCII
und falls das Ergebnis nicht in ein int passt, geht noch unsigned long oder unsigned long long für product.
-
also, was dirk mit ASCII meint ist:
'1' != 1 weil 1 im ASCII-Code ein Steuerzeichen ist. '0' entspricht dem wert 48
da es aber von Zeichencode zu Zeichencode abweichungen geben kann, nimmt mantemp-'0', denn 1-0=1, jetzt setze einfach die Werte der ASCIITabelle ein:
49-48=1
und egal welchen Zeichencode du jetzt verwendest, wird bei:
zahl='1'-'0'; immer das richtige Ergebniss rauskommen =b
-
ioBen schrieb:
Danke jetzt funktionierts, ich versteh aber nicht was mit
temp2=array[i]-'0';
gemeint ist.
Du ziehst vom Zeichen an der Stelle i im array, den Wert des Zeichens '0' ab.
'7' - '0' = 7
'3' - '0' = 3
denn wie schon gesagt: '7' != 7
-
DirkB schrieb:
Du ziehst vom Zeichen an der Stelle i im array, den Wert des Zeichens '0' ab.
'7' - '0' = 7
'3' - '0' = 3
denn wie schon gesagt: '7' != 7jetzt war ich schneller =b
-
OK dank euch!
-
itedvo schrieb:
DirkB schrieb:
Du ziehst vom Zeichen an der Stelle i im array, den Wert des Zeichens '0' ab.
'7' - '0' = 7
'3' - '0' = 3
denn wie schon gesagt: '7' != 7jetzt war ich schneller =b
Knapp. Zwischen Vorschau und Absenden reingeschmuggelt
Aber deine Erklärung ist Anfängerfreundlicher.
-
ich lass meistens die vorschau weg um mir einen vorsprung zu holen =b
erfordert zwar dass ich genauer und fehlerfrei schreibe, aber es bringt einige
sekundennun ja, kann daran liegen dass ich erst seit 3 Jahre Programmiere, dass
es anfängerfreundlicher ist. oder einfach weil ich noch schüler bin