warning: format '%lu' erwartet argument vom Typ "long unsigned int", aber argument 4 hat Typ " long unsigned int *' [-Wformat]
Bekomme ich warning: format '%lu' expects argument of type 'long unsigned int', but argument 4 has type 'long unsigned int *' [-Wformat]
für den folgenden code
unsigned long buf[254];
char systemlogmsg[500]= {'\0'};
snprintf(systemlogmsg, sizeof(systemlogmsg), "INFO: %lu ", buf);
was sollte ich anstelle von %lu
?
Außerdem, ich habe versucht,
snprintf(systemlogmsg, sizeof(systemlogmsg), "INFO: %lu ", (unsigned long int *) buf);
aber es hat nicht geholfen. Wie sollte ich bestanden haben, die Besetzung?
- Was genau möchten Sie tun, drucken Sie die 254 Werte, der erste Wert, Die Adresse des Arrays?
- Will ich drucken alle Werte 254
Du musst angemeldet sein, um einen Kommentar abzugeben.
deklariert ein array von unsigned longs. So
buf
ist ein Zeiger so weit wie sprintf betroffen ist. Aber Sie versuchen, format%lu
, das rechnet sich nicht um einen pointer, vielleicht ein element des Arrays:Also, wenn Sie haben 254 unsigned longs, die Sie benötigen, zu entscheiden, welches zu drucken. Wenn Sie möchten, drucken Sie alle:
buf
ist ein" pointer " - Nein, es ist ein array.sprintf()
, es ist immer noch ein array. Es ist nur so, dass es zerfällt zu einem Zeiger auf sein erstes element, und die Funktion bekommt den Zeiger Wert.buf
.Ich denke, das Problem hier ist, dass
buf
ist ein array vonunsigned long
s, aber Sie sind vorbei in einer Formatierung, Bezeichner, der erwartet, dass ein singleunsigned long
. Sie sollten entweder wählen Sie die spezifischenunsigned long
aus dem array, das Sie drucken möchten, oder ändern Sie die Formatierung Planer zum ausdrucken einer Zeiger eher als eineunsigned long
.Hoffe, das hilft!
buf
ist ein array von 254unsigned long
s und zerfällt inunsigned long *
wenn an eine Funktion übergeben. Sie haben zu entscheiden, welches element des array, das Sie drucken möchten, und verwenden Sie array-subscripting:zum Beispiel.
Edit: wenn Sie möchten, drucken Sie alle 254 zahlen, dann müssen Sie rufen Sie die Funktion in eine Schleife (der index des Arrays die Schleife variable, offensichtlich).