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 int

    char 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 man

    temp-'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' != 7

    jetzt 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' != 7

    jetzt 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
    sekunden 😃

    nun ja, kann daran liegen dass ich erst seit 3 Jahre Programmiere, dass
    es anfängerfreundlicher ist. oder einfach weil ich noch schüler bin 🙄


Anmelden zum Antworten