Ich beginne gerade erst, mich mit C auseinanderzusetzen und habe noch einige Verständnisprobleme bei der Deklaration und Verwendung von Strings. Folgender Hintergrund: Ich möchte einen String Zeichen für Zeichen in ein LCD-Display schreiben. Ich habe dafür auch schon Codeschnippsel entdeckt, die mehr oder minder gut funktionieren - allerdings würde ich auch gern verstehen, was ich da eigentlich tue. Ich habe zum Einen eine Funktion zum Schreiben eines einzelnen Char´s - hier ist die Arbeitsweise vollkommen klar. Eine weitere Funktion soll einen String übergeben bekommen und diesen Zeichen für Zeichen mittels der vorgenannten Funktion ausgeben. Hier beginnen meine persönlichen Fragezeichen: Wie deklariere ich den Typ "String" überhaupt? Wie kann ich auf einzelne Zeichen des Strings (beliebig oder der Reihe nach) zugreifen? Ich würde mich sehr freuen, wenn mir einer von Euch dabei auf die Sprünge helfen könnte.... Danke im Voraus Volkhard
Ein String ist in C ein Array von chars. Das Stringende wird i.d.R. durch das Zeichen '\0' (null) gekennzeichnet. Näheres dazu liest man am besten im Buch "Programmieren in C", Kernighan & Ritchie, zweite Auflage, Hanser Verlag.
In dem Zusammenhang solltest Du Dir auf jeden Fall auch Pointer(Zeiger) ansehen. hier mal eine Bsp zum Zeichweisen ausgeben eines "Strings" (real natürlich ein array of char) void send_string(char* string) { while(*string) { lcd_data(*string++); //diese Funktion gibt ein Char aufs LCD } } Du übergiebst der Funktion einen Zeiger der auf das erste Element Deines Array of Char zeigt. In der while-Schleife wir zuerst immer überprüft ob das Ende(0x00) des "Strings" erreicht ist. Wenn nicht wir der Inhalt(mit dem *) der Speicherstelle auf die der Zeiger string zeigt ausgegeben und anschließend der Zeiger auf das nächste element des Arrays gesetzt(mit dem ++). Wie gesagt Zeiger sind elementar für C und das solltest Du dir auf jeden Fall mal ansehen. Der Kernighan & Ritchie ist auf jeden Fall eine gute Anlaufstelle Gruß Jochen
So, hier bin ich nochmals. Habe mir inzwischen den Kernighan/Ritchie zugelegt und auch das angegebene Onlinebuch durchstöbert. Etliches ist mir dabei klar(er) geworden. Eine Frage habe ich dennoch: Dass über ein vorangestelltes Sternchen eine Variable dereferenziert wird und über diesen Pointer auf den Variableninhalt zugegriffen werden, habe ich begriffen. Ich bin aber auch schon auf die Notation char* ohne (!) Zwischenraum zwischen dem Typ "char" und dem Sternchen gestoßen. Diese Variante habe ich in keiner meiner Quellen erläutert bekommen. Handelt es sich dabei schlichtweg um einen Tippfehler (die Variante "char *" ist mir durchaus schon klar)? Vielen Dank im Voraus für die Belehrung...
wobei zweiter Notation besser ist denn: char* a, b; char *a, b Beides macht a als Pointer auf char und b als char ist meiner Ansicht nach aber bei der zweiten Variante besser zu erkennen. Grüßle Jochen
Tach! Ist Geschmackssache, mir gefällt char* a; besser, weil ich hab die Variable a (letztes "Feld") die vom Typ "pointer auf char" ist (erstes "Feld")... Wenn man natürlich mehrere Variablen in einer Zeile definiert ist aber Jochens Version besser, aus Gründen der Übersichtlichkeit würde ich persönlich aber schreiben: char a; char b; char* c; char* d; ...der Geschmack rührt wohl von Pascal her, da hieße es var a: ^byte; Stefan
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.