Warnung: format "%x " erwartet argument vom Typ 'unsigned int'
Wenn ich versuche, und kompilieren Sie diese, bekomme ich folgenden Fehler, nicht sicher, warum...
Warnung: format "%x "erwartet argument vom Typ "unsigned int", aber argument 2 hat Typ 'char *' [-Wformat=]
printf("Name buffer address: %x\n", buffer);
Code:
#include <string.h>
#include <stdio.h>
main(){
char name[200];
printf("What is your name?\n");
scanf("%s", name);
bo(name, "uname -a");
}
int bo(char *name, char *cmd){
char c[40];
char buffer[40];
printf("Name buffer address: %x\n", buffer);
printf("Command buffer address: %x\n", c);
strcpy(c, cmd);
strcpy(buffer, name);
printf("Goodbye, %s!\n", buffer);
printf("Executing command: %s\n", c);
fflush(stdout);
system(c);
}
- welchen Teil der Fehlermeldung war unklar?
- Stellt sich die Frage fand ich sehr hilfreich für meinen speziellen Fall: stackoverflow.com/questions/19478509/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dass Sie immer die Warnungen, weil der folgenden Aussagen
%x
erwartet eineunsigned int
, während Sie liefert einen Zeiger.Verweisen,
C11
standard, Kapitel §7.21.6.1Liefert ungültiges argument aufruft Undefiniertes Verhalten.
Sollten Sie mit Hilfe
%p
zum drucken der Adresseund warf das argument
void *
, denn für die Zeiger-Typen keine default argument promotion stattfindet.Gesagt haben, dass,
main()
sollteint main(void)
zumindest auf dem standard entsprechen.bo()
da die implizite Deklarationen sind bad-und nicht-standard jetzt.Drucken einer Adresse verwenden
"%p"
statt"%x"
. Sie müssen auch Stimmen, umvoid *