Hallo Seit längerem programmiere ich nun in C, habe aber noch nie mit Pointern gearbeitet. Ich bin nun bei einem Problem angelangt, bei welchem Pointer notwendig sind. Ich habe nach Pointern gegoogelt, jedoch nicht zu einer funktionierenden Lösung gekommen. Nun zu meinem Problem: Ich übergebe einer Funktion 3 Werte und einen String. Diese Funktion schreibt einige Konstanten am Anfang (ab pos 1) eines Arrays mit festgelegter grösse. Dannach werden die drei übergeben Variabeln, und den übergebenen string (ohne das letze Zeichen) in das Array geschrieben. An letzer gebrauchter Stelle wird 0x00 in deas Array geschrieben. An Erster Stelle (pos 0) steht die letzte benuzte Stelle des Arrays. Nun zu meinem Programm welches noch einige Fehler hat: int8 lcd_data[65]; void lcd_printf(int8 x,int8 y,int8 p,int8 *string[]) { int8 copy=6; lcd_data[1]=0x1B; lcd_data[2]='Z'; lcd_data[3]=p; lcd_data[4]=x; lcd_data[5]=y; for(;*string!='';string++) { lcd_data[copy]=*string; copy++; } lcd_data[copy]=0; lcd_data[0]=copy; lcd_send(); } void main(void) { lcd_printf(15,13,'C',*"hallo"); while(1); } Nun ein Zahlen Beispiel was nach diesem Aufruf im Array stehen sollte, was aber nicht der fall ist: lcd_data={11,0x1B,'Z','C',15,13,'h','a','l','l','o',0} Danke für Ihre Hilfe
Luck'n lol wrote: > void lcd_printf(int8 x,int8 y,int8 p,int8 *string[]) Als Parameterdeklaration ist *string[] identisch mit **string und wohl nicht das was du erreichen willst. Und was dir zudem eine Fehlermeldung einbringen sollte. Besser: void lcd_printf(int8 x,int8 y,int8 p,int8 string[]) > lcd_printf(15,13,'C',*"hallo"); wiederum ist eine etwas merkwürdige Form von lcd_printf(15,13,'C','h'); was den Compiler ebenfalls irritieren müsste. Besser: lcd_printf(15,13,'C',"hallo"); Wenn dir Pointer derart zusetzen: Das geht alles auch mit Array-Index statt Pointer.
1. Danke für deine schnelle antwort 2. Habe diesbezüglich schon einiges mit dem try and error verfahren probiert. Den Funktionskopf habe ich korigiert, jedoch wenn ich den poiter beim aufruf entferne, gibt es folgenden Fehler beim compilieren: Attempt to create a pointer to a constant
Kann sein, dass der Compiler aus "hallo" ein Array mit "const" Attribut macht, obwohl das in C aus Kompatibilität mit Milliarden von existierenden Quellcodezeilen eigentlich nicht so gängig ist. Evtl. Compiler-Option. Dann Parameter als , const int8 string[]) deklarieren.
Nun das mit const behab den Fehler nicht. Versuche es nun mal lieber mit einem Array. Hier jedoch weis ich nicht genau wie die übergabe funktioniert. Stimmt es, das ich im Funktionskopf void lcd_printf(...,int8 string[58]) schreiben muss? Kann ich diekt den string im Aufruf eingeben, oder muss ich zuerst ein array erstellen?
Luck'n lol wrote: > Stimmt es, das ich im Funktionskopf > void lcd_printf(...,int8 string[58]) > schreiben muss? Nein. > Kann ich diekt den string im Aufruf eingeben Ja.
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.