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
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.
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
Philip W. schrieb: > 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? Sortiere erst einmal deine Gedanken. Dann deine Worte.
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.
ginge das auch so... int convert(char Wert[]) { int result = 0; while( isdigit( Wert[]) ) { result = 10 * result + ( Wert[] - '0' ); Wert++; } return result; }
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; }
1 | int convert(char *Wert) |
2 | {
|
3 | int result = 0; |
4 | |
5 | while (isdigit(*Wert)) |
6 | {
|
7 | result = 10 * result + (*Wert - '0'); |
8 | Wert++; |
9 | }
|
10 | |
11 | return result; |
12 | }
|
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.