Hallo Hat jemand eine kleine Duko für den Einstieg in C mit Zeigern. Es geht speziel über die Übergabe von dem String 'Hallo' in eine Funktion. Kommen da nicht weiter. Gruß
void eine_funktion(const char * str) { // mach was mit 'str' } int main() { eine_funktion("Hallo Welt"); return 0; }
Hallo Habe es hingebracht. Ich habe nur noch eine Variable dazwischen geschaltet. Habe aber noch ein Problem. Das Programm gibt mir nur jedes zweite Zeichen auf dem Display aus. Ich dachte man dann den Wert im Zeiger um eins erhöhen String++; Und er zeigt dann auf das nächste Zeichen. Habe ich da einen Denkfehler, oder hat sich wo anders ein Fehler eingeschlichen? Gruß
Oh je... Schalte an Deinem Compiler mal alle Warnungen ein. Beim gcc geht das mit "-Wall -O". Dein Code strozt vor Fehlern: void send_LCD(int zeile, int stelle,int *String) ~~~~~~~~~~~~ Wieso verwendest Du da einen Zeiger auf ein "int"??? Schau nochmals mein Beispiel an, was da steht... Hier mal eine verbesserte Version Deines Programms: #define DELAY_SEND 100 void delay() { for (int i=0; i < DELAY_SEND; i++) ; } void send_LCD(int zeile, int stelle, char * text;) { int adresse; switch (zeile) { case 1: adresse = 0x80; break; case 2: adresse = 0xC0; break; case 3: adresse = 0x90; break; case 4: adresse = 0xD0; break; default: return; // Fehler: Ungültige Zeile! } adresse += stelle - 1; //Adresse umstellen *LCD_Daten = adresse; *LCD_Steuer =0x04; *LCD_Steuer =0x00; delay(); while (*text) { *LCD_Daten = *text++; *LCD_Steuer = 0x05; *LCD_Steuer = 0x01; delay(); } }
Hallo Ahh. Jetzt haut es hin. Das mit den Fehlern glaube ich gern. Gruß und Danke für die Hilfe. wolf4124
Ein Zeiger besteht nicht nur aus einer Adresse, sondern definiert auch die Größe des Elements, auf das es zeigt. Wenn Du den Zeiger als Pointer auf ein int deklarierst, dann stellt string++ den Zeiger auf die nächste int-Position im Speicher. Bei int = 2 Byte also auf +2 Byte. Deswegen zeigte Dein lcd nur jedes 2.Zeichen an. Gruß, 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.