Wenn dein "string" eh nur aus einem Zeichen besteht, würd' ich das ganricht mit string machen
Code:unsigned int d = 'a'; // EINFACHES HOCHKOMMA !! ... if (c == d) { }
Hi!
Ich möchte einen empfangenen String im µc auswerten, nur schaffe ich es einfach nicht. Laut Fleurys Angabe ist das Empfangene Zeichen ein "unsigned int" in diesem Fall die Variable "c". Jetzt würde ich "c" gerne mit strings vergleichen um eine Led leuchten zu lassen. Nur wie vergleiche ich ein unsigned int und einen String??
Hier ist mein Code:
GrußCode:#define F_CPU 16000000 #include <stdlib.h> #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <avr/pgmspace.h> #include <util/delay.h> #include <avr/uart.h> #define UART_BAUD_RATE 19200 unsigned int Empfangen(void); int main(void) { DDRD = (1<<DDD5); uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) ); sei(); int i; unsigned int c; char d = "a"; for(;;) { _delay_ms(10); c=Empfangen(); //Aufruf der Funktion Empfangen (steht nach der main-Funktion) if (c==d) //Abgleich von c und d, hier steckt der Wurm drin { PORTD |= (1<<PD5); for(i=0;i<100;i++) { _delay_ms(10); } PORTD &= ~(1<<PD5); } } } unsigned int Empfangen(void) //Uart Abfrage und Rückgabe von c { unsigned int c; c = uart_getc(); return(c); }
Charly
Wenn dein "string" eh nur aus einem Zeichen besteht, würd' ich das ganricht mit string machen
Code:unsigned int d = 'a'; // EINFACHES HOCHKOMMA !! ... if (c == d) { }
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Hi!
Danke erstmal! Es geht mir darum später aus einer empfangenen Zeichenfolge z.B. v120 (Vor mit geschwindigkeit 120) diese zu zerteilen und auszuwerten. Dazu müsste ich aber aus dem int ein string machen und das würde ich jetzt gerne mit einfachen Zeichenfolgen versuchen.
Was mich an deiner Variante interessieren würde, warum kann ich in eine intVariable einen Char schreiben??
gruß
Ein char besteht aus 8Bit, ein int aus 16Bit. In einem char kannst du also Zahlen im Bereich von 0 bis 255 darstellen. Jedes Zeichen (z.B. 'A' oder 'r') ist einer Zahl in diesem Bereich zugeordnet. In ein int passen größere Zahlen, aber natürlich auch wieder alle aus einem char. Also kannst du die Zahl aus einem char in ein int schreiben. Ein int hat einen größeren Wertebereich als ein char.Was mich an deiner Variante interessieren würde, warum kann ich in eine intVariable einen Char schreiben??
Hi!
Danke! Das mit int und char ist mir mittlerweile klar...
Nun noch eine Frage:
Ich hab jetzt in der Variable c einen Integerwert z.B. 94 für 'a' und ich möchte ihn ohne casten in einen char wandeln. D.h. ich will kein 94 in der Charvariable stehen haben sondern ein "a". Hab schon nach Funktionen gesucht, die das machen, aber leider nichts gefunden. Kennt jemand von euch eine passende Fkt. dazu?
Gruß
Charly
Hast du die Zahl selbst den verschiedenen Zeichen zugeordnet? Denn ein 'a' bestitzt nach ascii-Tabelle den Wert 97.
Dazu wirst du auch keine Funktionen finden, weil es da nichts zum umwandeln gibt. Das 'a' ist quasi nur eine andere Repräsentation der ihr zugeordneten Zahl.D.h. ich will kein 94 in der Charvariable stehen haben sondern ein "a".
Um das erste Zeichen von "a" zu bekommen, kannst du schreiben
char c = "a"[0];
oder
char * text = "a";
char c = text[0];
Ein String (Zeichenkette) ist ein Array von char-Werten. Allerdings bekommst du in C nie eine Zeichenkette, sondern immer nur ihre Anfangsadresse.
Mit dem text[0] bekommst du das erste Element der Kette, also 'a'. Numerierung beginnt immer bei 0.
Informatiker am Bahnhof:
0...1...2 WO IST MEIN DRITTER KOFFER?!!!
Disclaimer: none. Sue me.
Hi!
@Pascal
Du hast natürlich recht, hab mich mit der Zahl vertan.
@SprinterSB
Ich möchte ja ein Array bekommen. Bin immer noch am Uart-zeichenempfangen und diese dann zusammenzusetzen. Ich nutze die lib von Peter Fleury und empfange statt z.B. des Zeichens a, dessen ascii-nummer als unassigned int. Möchte jetzt nicht die Asciinummer ins char schreiben, sondern das zugehörige Zeichen, um mit Stringfunktionen arbeiten zu können, denn diese Fkt. unterstützen leider kein cast.
Kann mir jemand damit helfen?
Gruß
Lesezeichen