Konverierung Char -> int



  • Ich habe ein Programm geschrieben, bei dem ich eine Zahl (int) in einen
    String konvertiere. Ich habe dieses jenes welches mit dem Befehl itoa getan.
    Von String in int klappt auch mit atoi. Was ich aber möchte ist, dass ich
    jedes Zeichen des Strings extra umwandeln will.



  • Also aus dem String "345" soll int1=3 int2=4 und int3=5 werden?

    MfG SideWinder



  • ja, genau so soll das werden.
    Will also jede Zahl für sich herausfiltern.



  • Ein String ist nichts anderes als ein char-Feld. Also gehts du zu jedem Element des Feldes, holst dir den 'char' und wandelst ihn um.



  • also würde mich auch interessieren!

    ich habs nun so:

    char zahl[30]="123";
    	int a,b,c;
    
    	a=zahl[0];
    	b=zahl[1];
    	c=zahl[2];
    
    	printf("%c\n%c\n%c\n",a,b,c);
    

    nur in den ints stehen die ascii werte und ich muss sie halt
    als char ausgeben! wie kann ich denn direkt die char werte in die
    ints reinschreiben?

    und geht das überhaupt? da ja auch buchstaben vorkommen können.

    also ich wüsste nur die lösung das ich überprüfe welcher ascii-code es
    ist und dann halt den entsprechenden wert hineinschreibe?!

    babel



  • Die 0 hat den ASCII-Wert 48. Wenn also in den ints die ASCII Werte drinstehen, ziehst du einfach 48 ab und hast so den 'reinen' Wert
    (edit: Diese Methode geht natürlich nur bei Ziffern)

    char zahl[30]="123";
    
        int a,b,c;
    
        a=zahl[0];
        b=zahl[1];
        c=zahl[2];
    
        //gibt 1 2 3 aus
        printf("%c %c %c\n",a,b,c);
    
        // gibt 49 50 51 aus (die ASCII-Werte)
        printf("%d %d %d\n",a,b,c);
    
        // gibt 1 2 3 aus
        printf("%d %d %d\n",a-48,b-48,c-48);
    

    Ist es das, was ihr sucht?



  • yo gute idee danke!



  • Anstatt die 48 schreibt man '0', dann weiß auch jemand, der nicht die ASCII-Tabelle in- und auswendig kennt, was gemacht wird. Zahlen sind einfach unübersichtlich in solch einem Fall und die Leute, die später einmal euren Quellcode lesen müssen, werden es euch danken, wenn anstatt 48 '0' dasteht.


Anmelden zum Antworten