Ich versuche einen Mikrochip in C zu programmieren. Gerade jetzt arbeite ich, um eine Zeile auf einem LCD-Bildschirm aber es zu aktualisieren funktioniert nicht richtig. Kann jemand etwas Licht dazu bringen?Compiler Fehler Aufruf von sprintf: "erwartet 'char *' aber Argument ist vom Typ 'char'"
float slope = 0.0626;
char *mystring;
int8_t LCDline1[20];
void myfunction(){
sprintf(*mystring, "%ld", (long)(slope * 10000));
memcpy(LCDline1, *mystring, strlen(*mystring)+1);
}
Wenn ich kompilieren Code bekomme ich die folgenden drei Fehler.
calibrate.c:60:5: warning: passing argument 1 of 'sprintf' makes pointer from integer without a cast. note: expected 'char *' but argument is of type 'char'
calibrate.c:61:5: warning: passing argument 1 of 'strlen' makes pointer from integer without a cast. note: expected 'const char *' but argument is of type 'char'
calibrate.c:61:5: warning: passing argument 2 of 'memcpy' makes pointer from integer without a cast. note: expected 'const void *' but argument is of type 'char'
Ich bin nicht sicher, was ich falsch mache, bin ich die folgenden Definitionen für mein Ausgangspunkt
void *memcpy(void *str1, const void *str2, size_t n)
size_t strlen(const char *str)
char *p = "String";
Was ich brauche, ist eine Zeichenfolge, die beliebig groß sein kann, weil der Wert der Steigung überall von 3 bis 8 Ziffern Precesion haben. Ich verwendete http://stackoverflow.com/questions/8732325/how-to-declare-strings-in-c für meine Erklärung. Wie deklariere ich einen Zeiger, mit dem ich den Inhalt ändern kann? – Bob
@Bob, können Sie es einfacher machen mit 'char mystring [50];' –
Das ist der Punkt der dynamischen Zuordnung - Sie können 'malloc' verwenden, um die gewünschte Größe zuzuweisen (innerhalb der Maschinen/OS Grenzen); Vergessen Sie auch nicht, einen zusätzlichen Zeichenbereich zuzuweisen, um das Nulltrennzeichen –