www.mikrocontroller.net

Forum: Compiler & IDEs Int, Char Umwandlung


Autor: Deramon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich hab nun schon ein paar Versuche gestartet, aber bin bisher zu
keiner Lösung gekommen :( Hab bisher nur AVRs in Bascomp programmiert,
aber dieser Basicinterpereter nicht das Gelbe vom Ei ist versuche ich
mich zur Zeit in C. Leider habe ich bisher noch keine Möglichkeit
gefunden, so easy wie in Bascom zu debuggen...

Problem:
int test = 326;

test soll nun in 3 einzelne Int zerlegt werden:

int x = 3;
int y = 2;
int z = 6;

Wie mache ich das am besten ?

Vielen Dank schon mal im Vorraus

cya
Deramon

Autor: franz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So sollte es gehen:

 x=test/100;
 test-=(x*100);

 y=test/10;
 test-=(y*10);

 z=test;

Grüße,
Peter

Autor: Deramon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke :)
Einfach und genial...


Ich war bisher total auf int -> Char umwandlung fixiert. Den Char dann
mit einer funktion zerlegen(wie in Bascom mit Mid(string,start,len)
oder c# string.substring(start,len) und zurück in int umwandlen. Hab so
eine funktion in string.h nicht entdecken können, bzw. komme mit diesen
funktionen nicht so ganz klar.

Interessieren würde es mich aber schon. Gibt es so eine Funktion in C,
falls ja wie würde das in diesem Fall funktionieren ?
Der Bascom code ohne umwandlung von/nach int wäre dafür:
test = "326"
x = Mid(test,1,1);
y = Mid(test,2,1);
z = Mid(test,3,1);

cya
Deramon

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

wenn es um die extraktion einzelner Zahlen aus einem String geht:

test = "326"
x = test[0]-0x30;
y = test[1]-0x30;
z = test[2]-0x30;

Autor: Karl Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, also wenn das keine compiler- oder interpreterspezifische
Eigenschaft ist geht das in C so:

int test = 326;
int x,y,z;
x = test/100;
y = (test%100)/10; //Divisionsrest der division durch 100 durch 10
z = test%10; //Divisionsrest der division durch 10

mfg florian

was funktioniert ist schon alt

Autor: franz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Karl Florian,

Deine Variante hatte ich vor längerer Zeit auch mal im Einsatz.
Soweit ich mich noch richtig erinnere, war der von WinAVR erzeugte Code
größer als der von der Variante aus meiner ersten Antwort oben.

Ich kann mich aber auch irren.

Grüße,
Peter

Autor: Karl Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,
das glaube ich mal unbesehen, vielleicht sollte ich in Zukunft schon
beim Problem über die Optimierung nachdenken.
mfg florian

warum heisst C eigentlich C? weil mir A und B nicht mehr gefallen hat.

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> warum heisst C eigentlich C? weil mir A und B nicht mehr gefallen
> hat.

Naja, fast. :-)

Es gab in der Tat eine Vorläufersprache namens B, so daß der
Nachfolger eben C genannt worden ist.  A gab's der Legende nach
allerdings nicht. ;-)  (Das B könnte auch ein Abkürzungsbuchstabe
gewesen sein, kann ich mich gerade nicht erinnern.)

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So war es:

CPL -> BCPL -> B -> C

;)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.