Typumwanldung!



  • so,

    -hab ne array von char: char buffer[2]
    -in diesem array exestieren 2 werte: buffer[0]='5' buffer[1]='4'
    -jetzt möchte ich diese werte in INT umwandeln, die summe berechnen und
    in als char wieder in 'buffer' abspeichern.
    -dh in buffer sollte dann '9' (als char) stehen!

    wie kriege ich das hin? ich sitze schon solange dadran..

    danke!



  • Hallo,
    Schau dir mal die Funktionen sprintf(), atoi() und strtol() an.

    Ein Blick in die C++-FAQ (einmal Zahl nach String und zurück kann auch nicht schaden... weiß atm nicht, ob es etwas derartiges in der C-FAQ auch gibt).

    Gruß Caipi



  • mit c++ habe ich keine probleme..da würde ich es schnell hinbekommen aber
    bekomm es in c nicht hin..habe es mit atoi und fprints versucht, leider ohne erfolg!



  • brainwave81 schrieb:

    mit c++ habe ich keine probleme..da würde ich es schnell hinbekommen aber
    bekomm es in c nicht hin..habe es mit atoi und fprints versucht, leider ohne erfolg!

    Zeig doch mal den Code, bei dem du gescheitert bist :). (Glaub mir, der Lerneffekt wenn du anhand deines Codes den Fehler aufgezeigt bekommst, ist ungleich größer als wenn du eine auf Anhieb funktionierende Lösung hingeklatscht bekommst).

    Gruß Caipi



  • Wenn du nur die Werte von Variablen mit dem Typ char in int umwandeln möchtest, dann kannst du das ganz einfach tun. Jedes Zeichen hat doch auch einen ASCII-Wert, der ja ganz leicht ein int sein kann (ich hoffe, dass ich das korrekt asugedrückt habe)

    char c,d;
    char result;
    
    c = '4';
    d = '5';
    
    result = (c-'0')+(d-'0')+'0';
    

    '4' hat den ASCII-Wert 52 und '0' 48. '4'-'0' ist also 52-48 und das ist 4. So kannst du char Werte umwandeln um mit ihnen zu rechnen.
    '4'-'0' = 52 - 48 = 4;
    '5'-'0' = 53 - 48 = 5;
    5 + 4 + '0' = 9 + 48 = 57
    57 ist der ASCII-Wert für '9'. Der Code ist nicht getestet.



  • // atoi und zurück mit sprintf
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    
    int main()
    {
      char buffer1[]="230";
      char buffer2[]="450";
      char final[32]; //hab hier Ergebniss gesichert
      int variable;
    
      memset(final,0,32);
    
      variable= atoi(buffer1);
      variable+=atoi(buffer2);
    
      sprintf(final,"%d",variable);
    
      printf("%d - als Zahl\n",variable);
      printf("%s - als String\n",final);
    
      getchar();
    
    	return(0);
    }
    


  • #include <stdio.h>
    #include <string.h>
    
    int main(void)
    {
        char buf[] = "450";
        unsigned int i;
        int sum=0;
    
    	for ( i = 0; i < strlen(buf); i++ )
    	      sum += buf[i] - '0' ;
    
    	sprintf(buf,"%d", sum);
    
    	printf("%s\n", buf);
    
        return 0;
    }
    


  • Warum Stringfunktionen verwenden, wenn der OP gar keinen String hat?



  • Der OP kann das als Empfehlung verstehen und an sein char-Array eine 0 anhängen.
    Dann lassen sich bequem die string Funktionen verwenden.


Anmelden zum Antworten