Fehler beim auslesen von Zeichen aus Char



  • Hi,

    ich versuche gerade eine Funktion zu schreiben die mir die Quersumme einer Zahl zurückgibt.

    int Get_quersumme(int zahl)
    {  
      int i = 0; 
      int str_length = 0;
      int quersumme = 1;
      char str_zahl[20] = "";
    
      sprintf(str_zahl, "%d", zahl);
      str_length = strlen(str_zahl);
    
      for (i = 0; i < str_length; i++)
      {
        char temp = str_zahl[i];
        quersumme = quersumme * atoi(&temp);  
      } 
    
      return quersumme;  
    }
    

    Bis zur for Schleife geht noch alles gut. Ich habe mal in die for eine Debug Message eingebaut.

    Als Test habe ich die Funktion mit "123456" gefüttert. Die Ausgabe in der for Schleife sah dann so aus:

    1123456
    2123456
    3123456
    ...

    Kann mir jemand sagen woran das liegt ?

    Gruß Yannic



  • atoi() erwartet die Adresse auf einen nullterminiertes Chararray (String)
    Du übergibst die Adresse auf ein char.

    Um an den Zahlenwert einer Ziffer zu kommen kannst du

    quersumme = quersumme * (temp -'0');
    

    Nebenbei kannst du an die einzelnen Stellen auch mit dem Modulo-Operator % kommen.

    Und als Summe habe ich das Ergebnis einer Addition im Gedächtnis.
    Du hast aber eine Multiplikation.



  • Ist auch gerade Thema im Mathe/Physik-Unterforum: http://www.c-plusplus.net/forum/p2139697#2139697


Anmelden zum Antworten