Char Array Umwandlung

#2107825
Lesenswert?

Schönen guten Abend,

bin gerade damit beschäftigt ein Programm in C zu schreiben.
Bin auf folgende Problematik gestoßen...
...habe ein Array char Wert [] beschrieben von [0] bis [3] (siehe 
Programmcode)

Möchte nun die Werte Wert[0] bis Wert[4] in ein Integer wandeln, um 
anschließend eine Dezimalziffer zu erzeugen.

Wert[0] = '1'
Wert[1] = '2'
Wert[2] = '2'
Wert[3] = '3'

der spätere Dezimalwert soll 1223 entsprechen und daraufhin mit anderen 
Dezimalwerten verglichen werden (siehe Programmcode)

Kann ich das char Array mit dem Aufruf einer int Funktion (char[]) und 
einem return Befehl in int umwandeln, oder so ähnlich.

So müsste das i-wie gehen oder, muss nur vorher die Werte von char in 
int wandeln? Und wie?

Wert_ges= (Wert[0]-48)*1000+(Wert[1]-48)*100+ 
(Wert[2]-48)*10+Wert[3]-48)*1




Programmausschnitt

//Hier wird das Array von 0 bis 3 beschrieben//

do
           {
             if (UART1_Data_Ready())
             {

              ziffer = UART1_Read();
              Wert [zaehl] = ziffer;
              zaehl = zaehl++    ;
             }
           } while (ziffer != 111);




if (Wert_ges < 1000)
{
  PORTA = 0x01;
}


MfG
#2107857
Lesenswert?

Philip W. schrieb:

> Kann ich das char Array mit dem Aufruf einer int Funktion (char[]) und
> einem return Befehl in int umwandeln, oder so ähnlich.
>
> So müsste das i-wie gehen oder, muss nur vorher die Werte von char in
> int wandeln? Und wie?

Im einfachsten Fall benutzt du einfach die vorgefertigte Funktion atoi() 
oder strtol(). Die sind für solche Zwecke gedacht.

Willst du das selber schreiben
1
int convert( char * string )
2
{
3
  int result = 0;
4

5
  while( isdigit( *string ) ) {
6
    result = 10 * result + ( *string - '0' );
7
    string++;
8
  }
9

10
  return result;
11
}

PS: Ein C-Buch ist angebracht. Du hast noch einige andere fertige 
Hilfsfunktionen zur Verfügung. In deinem noch zu kaufenden C-Buch sind 
die alle aufgeführt, wie man sie benutzt und welche Besonderheiten es 
gibt.
Neben vielen anderen, für einen C-Programmierer wichtigen Themen.
#2107941
Lesenswert?

Vorab schon einmal vielen Dank für die schnelle Antwort.

In einer Integer Variable ist 16 bit groß und es stehen dann darin ganze 
Zahlen oder (also Dezimal) Im character stehen Buchstaben sprich ASCII 
oder?

Könnte mir jemand helfen und die Umwandlung für meine Anwendung mal 
umschreiben so wie es aussehen müsste?
Sprich so dass ich dann abschließend den Vergleich realisieren kann.
Wäre wirklich dankbar für weitre Antworten.

MfG
#2108001
Lesenswert?

Philip W. schrieb:
> Vorab schon einmal vielen Dank für die schnelle Antwort.
>
> In einer Integer Variable ist 16 bit groß und es stehen dann darin ganze
> Zahlen oder (also Dezimal) Im character stehen Buchstaben sprich ASCII
> oder?

Ja.
Spielt aber keine Rolle. Zumindest nicht die, die du jetzt denkst.
Ein char ist auch nichts anderes als eine Variable, die eine Zahl 
enthält. Und ja, auch mit einem char kann man rechnen!

> Könnte mir jemand helfen und die Umwandlung für meine Anwendung mal
> umschreiben so wie es aussehen müsste?

Sieh dir den Code an, den ich dir gepostet habe und überleg, wie das 
wohl funktioniert. Dein Codebeispiel ist ja nicht so weit davon 
entfernt. Nur anders strukturiert und anstelle dass du den ASCII Code 
für 0 hingeschrieben hast, übertrage ich diese Aufgabe an den Compiler, 
in dem ich einfach '0' schreibe.
Gast #2108157
Lesenswert?

Nein. Entweder Array oder Pointer.

Ein Array braucht einen Index.

int convert(char Wert[])
{
  int result = 0;
  int i = 0;

  while( isdigit( Wert[i]) ) {
    result = 10 * result + ( Wert[i] - '0' );
    i++;
  }

  return result;
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren